日志文件(Log files)是包含系統(tǒng)消息的文件,包括內(nèi)核、服務(wù)、在系統(tǒng)上運(yùn)行的應(yīng)用程序等。不同的日志文件記載不同的信息。例如,有的是默認(rèn)的系統(tǒng)日志文件,有的僅用于安全消息,有的記載 cron 任務(wù)的日志。 當(dāng)你在試圖診斷和解決系統(tǒng)問題時(shí),如試圖載入內(nèi)核驅(qū)動(dòng)程序或?qū)ふ覍?duì)系統(tǒng)未經(jīng)授權(quán)的使用企圖時(shí),日志文件會(huì)很有用。本節(jié)討論要到哪里去尋找日志文件,如何查看日志文件,以及在日志文件中查看什么。 某些日志文件被叫做 syslogd 的守護(hù)進(jìn)程控制。被 syslogd 維護(hù)的日志消息列表可以在 /etc/syslog.conf 配置文件中找到。
盡管Linux可以支持種類繁多的文件系統(tǒng),但是幾乎所有的Linux發(fā)行版都用ext2作為默認(rèn)的文件系統(tǒng)。
ext2的設(shè)計(jì)者主要考慮的是文件系統(tǒng)性能方面的問題。ext2在寫入文件內(nèi)容的同時(shí)并沒有同時(shí)寫入文件的meta-data(和文件有關(guān)的信息,例如:權(quán)限、所有者以及創(chuàng)建和訪問時(shí)間)。換句話說,Linux先寫入文件的內(nèi)容,然后等到有空的時(shí)候才寫入文件的meta-data。這樣若出現(xiàn)寫入文件內(nèi)容之后但在寫入文件的meta-data之前系統(tǒng)突然斷電,就可能造成在文件系統(tǒng)就會(huì)處于不一致的狀態(tài)。在一個(gè)有大量文件操作的系統(tǒng)中出現(xiàn)這種情況會(huì)導(dǎo)致很嚴(yán)重的后果。
日志文件系統(tǒng)比傳統(tǒng)的文件系統(tǒng)安全,因?yàn)樗锚?dú)立的日志文件跟蹤磁盤內(nèi)容的變化。就像關(guān)系型數(shù)據(jù)庫(RDBMS),日志文件系統(tǒng)可以用事務(wù)處理的方式,提交或撤消文件系統(tǒng)的變化。Linux系統(tǒng)缺少日志式文件系統(tǒng)是限制推廣其在企業(yè)級(jí)應(yīng)用的一個(gè)重要制約因素。
日志式文件系統(tǒng)在強(qiáng)調(diào)數(shù)據(jù)完整性的企業(yè)級(jí)服務(wù)器中有著重要的需求,是文件系統(tǒng)發(fā)展的方向。日志式文件系統(tǒng)的思想來自于如Oracle等大型數(shù)據(jù)庫。數(shù)據(jù)庫操作往往是由多個(gè)相關(guān)的、相互依賴的子操作組成,任何一個(gè)子操作的失敗都意味著整個(gè)操作的無效性,對(duì)數(shù)據(jù)庫數(shù)據(jù)的任何修改都要回復(fù)到操作以前的狀態(tài)。日志式文件系統(tǒng)采用了類似的技術(shù)。
在分區(qū)中保存有一個(gè)日志記錄文件,文件系統(tǒng)寫操作首先是對(duì)記錄文件進(jìn)行操作,若整個(gè)寫操作由于某種原因(如系統(tǒng)掉電)而中斷,則在下次系統(tǒng)啟動(dòng)時(shí)就會(huì)讀日志記錄文件的內(nèi)容來恢復(fù)沒有完成的寫操作。而這個(gè)過程一般只需要幾秒鐘到幾分鐘,而不是ext2文件系統(tǒng)的fsck那樣在大型服務(wù)器情況下可能需要幾個(gè)小時(shí)來完成掃描。
當(dāng)前l(fā)inux環(huán)境下有下面幾種日志文件可供選擇:
一、SGI的xfs文件系統(tǒng)
SGI最新發(fā)布xfs為 1.0.1版.(http://oss.sgi.com/projects/xfs/)
SGI的XFS 1.0是可被linux的2.4.x核心支持.在redhat上運(yùn)行的很好,SGI還在redhat上開發(fā)了一個(gè)安裝程序.
其它linux發(fā)行版的安裝程序也正在開發(fā)中.
SGI的xfs被稱為業(yè)界最先進(jìn)的、最具可升級(jí)性的文件系統(tǒng)技術(shù)。它是一個(gè)全64位,快速、穩(wěn)固的日志文件系統(tǒng),多年用于sgi的irix操作系統(tǒng)。sgi決定支持linux社區(qū),將關(guān)鍵的基本架構(gòu)技術(shù)授權(quán)于linux。它以開放資源形式發(fā)布了他們自己擁有的xfs的源代碼,并開始進(jìn)行移植。此工作進(jìn)展得很快,目前已進(jìn)入beta版階段。作為一個(gè)64位文件系統(tǒng),xfs可以支持超大數(shù)量的文件(9g×1gb,甚至更大的18g×1gb),可在大型 2d 和 3d 數(shù)據(jù)方面提供顯著的性能。xfs有能力預(yù)測(cè)其它文件系統(tǒng)薄弱環(huán)節(jié),同時(shí)xfs提供了在不妨礙性能的情況下增強(qiáng)可靠性和快速的事故恢復(fù)。
sgi的xfs可為linux和開放資源社區(qū)帶來的新特性有:
可升級(jí)性
xfs被設(shè)計(jì)成可升級(jí),以面對(duì)大多數(shù)的存儲(chǔ)容量和i/o存儲(chǔ)需求,可處理大型文件和包含巨大數(shù)量文件的大型目錄,滿足二十一世紀(jì)快速增長(zhǎng)的磁盤需求。xfs有能力動(dòng)態(tài)地為文件分配索引空間,使系統(tǒng)形成高效支持大數(shù)量文件的能力。在它的支持下,用戶可使用1exabyte (1g×1gb) 大的文件,遠(yuǎn)遠(yuǎn)大于現(xiàn)在最大的文件系統(tǒng)。
優(yōu)秀的i/o 性能
典型的現(xiàn)代服務(wù)器使用大型的條帶式磁盤陣列,以提供達(dá)數(shù)gb/秒的總帶寬。xfs可以很好地滿足i/o請(qǐng)求的大小和并發(fā)i/o請(qǐng)求的數(shù)量。
系統(tǒng)排錯(cuò)
xfs可以在一秒內(nèi)從大多數(shù)意外中斷中恢復(fù)。傳統(tǒng)文件系統(tǒng)必須在中斷后做一些特定的文件系統(tǒng)檢查,可能會(huì)花費(fèi)數(shù)小時(shí)才完成。xfs避免了冗長(zhǎng)的文件系統(tǒng)檢查,可明顯地減少讀寫磁盤的時(shí)間。
xfs可作為root文件系統(tǒng),并被lilo支持.在NFS服務(wù)器上使用也沒問題.支持軟件raid和LVM.
二、Reiserfs文件系統(tǒng)
Reiserfs文件系統(tǒng)的主頁是http://www.reiserfs.org/
在1997年7月23日,Hans Reiser把他的基于平衡樹結(jié)構(gòu)的ReiserFS文件系統(tǒng)在網(wǎng)上公布 。 這是ReiserFS的第一次公開亮相。此后,ReiserFS一直在Hans Reiser和領(lǐng)導(dǎo)下的開發(fā)小組下開發(fā)和發(fā)展,SuSE Linux也對(duì)它的發(fā)展起了重大的幫助。
由于ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。Linux內(nèi)核2.4.1-pre4版本開始包含ReiserFS文件系統(tǒng)。當(dāng)前的ReiserFS只能在Intel結(jié)構(gòu)體系上使用,但支持其他體系結(jié)構(gòu)的ReiserFS版本也正在積極開發(fā)中。
新一代的reiser4將于2002/9/30日發(fā)布.
ReiserFS是一種新型的文件系統(tǒng),在藍(lán)點(diǎn)Linux中你可以選擇它來裝載你的Linux操作系統(tǒng)和其他應(yīng)用程序和數(shù)據(jù)文件。它通過一種與眾不同的方式--完全平衡樹結(jié)構(gòu)來容納數(shù)據(jù),包括文件數(shù)據(jù),文件名以及日志支持。ReiserFS還以支持
海量磁盤和磁盤陣列,并能在上面繼續(xù)保很快的搜索速度和很高的效率。
ReiserFS是基于平衡樹的文件系統(tǒng)結(jié)構(gòu),尤其對(duì)于大量文件的巨型文件系統(tǒng),如服務(wù)器上的文件系統(tǒng),搜索速度要比ext2快;ext2使用局部的二分查找法,綜合性能比不上ReiserFS。
空間分配和利用情況
ReiserFS里的目錄是完全動(dòng)態(tài)分配的,因此不存在ext2中常見的無法回收巨型目錄占用的磁盤空間的情況。ReiserFS里小文件(<4K)可以直接存儲(chǔ)進(jìn)樹,小文件讀取和寫入的速度更快,樹內(nèi)節(jié)點(diǎn)是按字節(jié)對(duì)齊的,小的文件可共享同一個(gè)硬盤塊,
節(jié)約大量空間。Ext2使用固定大小的塊分配策略,也就是說,不到4K的小文件也要占據(jù)4K的空間,導(dǎo)致的空間浪費(fèi)比較嚴(yán)重。
先進(jìn)的日志機(jī)制
ReiserFS有先進(jìn)的日志(Journaling/logging)機(jī)制,在系統(tǒng)意外崩潰的時(shí)候,未完成的文件操作不會(huì)影響到整個(gè)文件系統(tǒng)結(jié)構(gòu)的完整性。 ext2雖然健壯性很強(qiáng),但一旦文件系統(tǒng)被不正常地?cái)嚅_,在下一次啟動(dòng)時(shí)它將不得不進(jìn)行漫長(zhǎng)的檢查系統(tǒng)數(shù)
據(jù)結(jié)構(gòu)的完整性的過程,這是為了防止數(shù)據(jù)丟失而必需的操作。對(duì)于較大型的服務(wù)器文件系統(tǒng),這種"文件系統(tǒng)檢查"可能要持續(xù)好幾個(gè)小時(shí),在很多場(chǎng)合下這樣長(zhǎng)的時(shí)間是無法接受的。 解決這個(gè)問題的一種技術(shù)"日志文件系統(tǒng)"。在日志的幫助下,每個(gè)對(duì)數(shù)據(jù)結(jié)構(gòu)的改變都被記錄下來,日志在機(jī)制保證了在每個(gè)實(shí)際數(shù)據(jù)修改之前,相應(yīng)的日志已經(jīng)寫入硬盤。正因?yàn)槿绱耍谙到y(tǒng)突然崩潰時(shí),在下次啟動(dòng)幾秒鐘后就能恢復(fù)成一個(gè)完整的系統(tǒng),系統(tǒng)也就能很快的使用了。
支持海量磁盤和優(yōu)秀的綜合性能
ReiserFS是一個(gè)相當(dāng)現(xiàn)代化的文件系統(tǒng),相比之下,ext2雖然性能已經(jīng)很好了,但其設(shè)計(jì)還只是19世紀(jì)80年代的水準(zhǔn)。
ReiserFS的出現(xiàn),使Linux擁有了像Irix/AIX那樣的高檔商用Unix才有的高級(jí)文件系統(tǒng)。ReiserFS可輕松管理上百G的文件系統(tǒng),在企業(yè)級(jí)應(yīng)用中有其用武之地,由于它的高效存儲(chǔ)和快速小文件I/O特點(diǎn),它在桌面系統(tǒng)上也表現(xiàn)出色:?jiǎn)?dòng)X窗口系統(tǒng)的時(shí)間ReiserFS比ext2少1/3。而ext2則無法管理2G以上的單個(gè)文件,這也使得ReiserFS在某些大型企業(yè)級(jí)應(yīng)用中比ext2要出色。
ReiserFS一個(gè)最受人批評(píng)的缺點(diǎn)是每升級(jí)一個(gè)版本,都將要將磁盤重新格式化一次,這個(gè)缺點(diǎn)也正在改進(jìn)中。
三、IBM的jfs文件系統(tǒng)
IBM最新發(fā)布xfs 1.0.2版.(http://oss.software.ibm.com/developerworks/opensource/jfs/)
jfs(Journaled File System Technology for Linux)的開發(fā)者包括AIX(IBM的Unix)的jfs的主要開發(fā)者。在AIX上,jfs已經(jīng)經(jīng)受住了考驗(yàn)。它是可靠、快速和容易使用的。
2000年2月,ibm宣布在一個(gè)開放資源許可證下,移植linux版的jfs文件系統(tǒng)。jfs也是一個(gè)有大量用戶安裝使用的企業(yè)級(jí)文件系統(tǒng)。
使用日志文件系統(tǒng),性能上會(huì)稍有損失,是因?yàn)楫?dāng)它保持一個(gè)日志時(shí),系統(tǒng)需要寫許多數(shù)據(jù)。但面對(duì)系統(tǒng)崩潰及運(yùn)行fsck,這是值得的。jfs通過把同步日志轉(zhuǎn)為異步日志從而減少了性能的損耗。使用同步日志,系統(tǒng)直接進(jìn)行與文件系統(tǒng)的動(dòng)作成比例的日志記錄操作;而異步日志,日志記錄較少,且其可以在不影響其它文件系統(tǒng)操作時(shí)進(jìn)行記錄,因而可減少日志的開銷。
四、ext2的后繼者ext3fs
ext3是由開放資源社區(qū)開發(fā)的日志文件系統(tǒng),主要開發(fā)人員是redhat的黑客高手stephen tweedie。ext3被設(shè)計(jì)成是ext2的升級(jí)版本,盡可能地方便用戶從ext2fs向ext3fs遷移。ext3在ext2的基礎(chǔ)上加入了記錄元數(shù)據(jù)的日志功能,努力保持向前和向后的兼容性。這個(gè)文件系統(tǒng)也許稱為ext2的下一個(gè)版本更為合適些。
ext3fs工作得很好。ext3fs最大的優(yōu)點(diǎn)是向下兼容ext2。而且ext3fs還支持異步的日志,這意味著它的性能可能比ext2還好。但是使用ext3文件系統(tǒng)時(shí)要注意硬盤限額問題,在這個(gè)問題解決之前,不推薦在重要的應(yīng)用上采用ext3+disk quota
ext3最新版本是針對(duì)kernel 2.4.8的ext3-2.4-0.9.6-248.gz
新推出的redhat 7.2B上正式啟用了ext3,Turbolinux Server 6.5則同時(shí)支持 ReiserFS 及 ext3.
通過在已有的ext2文件系統(tǒng)上添加日志文件可把ext2文件系統(tǒng)轉(zhuǎn)換成ext3文件系統(tǒng).
你可以把一個(gè)文件系統(tǒng)在ext3和ext2自由切換.因?yàn)樵趀xt2文件系統(tǒng)上的ext3日志文件仍然存在,只是ext2不能認(rèn)出而已.