經(jīng)常有一些用戶詢問(wèn)關(guān)于高性能I/O的需求——如果他們可以使用Linux系統(tǒng)而不是AIX或者Solaris操作系統(tǒng)。但是從來(lái)沒(méi)有人詢問(wèn)Windows或者NTFS中的高性能I/O(高IOPS或者高流式I/O),因?yàn)檫@是不可能存在的。
Windows和NTFS文件系統(tǒng)自從10年前出現(xiàn)到現(xiàn)在幾乎沒(méi)有太大的改變,由于它們自身結(jié)構(gòu)限制的原因它們是不大可能拓展的。NTFS文件系同層、分配策略以及架構(gòu)組織使得NTFS文件系統(tǒng)不能有效地支持多TB文件系統(tǒng),更不用說(shuō)PB級(jí)文件系統(tǒng)了,因?yàn)镹TFS沒(méi)有成為微軟的目標(biāo)市場(chǎng)也就不足為奇了。
那么Linux系統(tǒng)最初的目標(biāo)市場(chǎng)是什么呢?當(dāng)然是取代微軟桌面了。Linux已經(jīng)從在桌面上運(yùn)行逐漸轉(zhuǎn)移到在Sun、IBM和SGI的大型SMP服務(wù)器上運(yùn)行。但是Linux操作系統(tǒng)和Linux文件系統(tǒng)能夠應(yīng)對(duì)高性能I/O帶來(lái)的挑戰(zhàn)嗎?
你也許會(huì)認(rèn)為你不需要高性能I/O,但是每臺(tái)服務(wù)器都需要這種I/O性能來(lái)滿足備份和恢復(fù)等簡(jiǎn)單需要。現(xiàn)有的LTO-4磁帶驅(qū)動(dòng)器可以以每面120MB(無(wú)壓縮)的速度運(yùn)行,支持每面240MB的無(wú)壓縮數(shù)據(jù)速率。如果你的文件系統(tǒng)不能支持這種流式數(shù)據(jù)傳輸所需的I/O的話,那么接下來(lái)備份和恢復(fù)所花費(fèi)的時(shí)間可能要比你預(yù)期的長(zhǎng)。對(duì)于多磁帶驅(qū)動(dòng)器的大型環(huán)境來(lái)說(shuō),磁帶驅(qū)動(dòng)器不能以完全的數(shù)據(jù)速率進(jìn)行工作的話,這就需要更多的磁帶驅(qū)動(dòng)器來(lái)滿足備份時(shí)間窗口,這也會(huì)對(duì)恢復(fù)流程造成影響。因此,只要是說(shuō)到備份或者恢復(fù),似乎所有人都對(duì)Linux文件系統(tǒng)的性能更感興趣。
Linux文件系統(tǒng)可以滿足其他大型Unix服務(wù)器的文件系統(tǒng)需求嗎?有些人可能會(huì)就這個(gè)問(wèn)題詢問(wèn)SGI,但是SGI有一款名為ProPack的軟件,這款軟件具有針對(duì)Linux的高速I/O優(yōu)化功能,另外SGI還有一個(gè)名為CxFS的開(kāi)放特有Linux文件系統(tǒng),它并不是標(biāo)準(zhǔn)Linux套件的一部分。因?yàn)镾GI的ProPack和CxFS不屬于標(biāo)準(zhǔn)Linux套件,所以我們?cè)谶@里就不談它們了。我們將主要談一談標(biāo)準(zhǔn)Linux系統(tǒng),因?yàn)槲覀兇蠖鄶?shù)認(rèn)識(shí)用的都是這種系統(tǒng)。
我們將主要來(lái)看兩點(diǎn):
1、Linux操作系統(tǒng)
2、Linux文件系統(tǒng)
Linux操作系統(tǒng)
我們先不考慮Linux未來(lái)的發(fā)展,而是將重點(diǎn)放在現(xiàn)在。Linux擁有一系列可以滿足AIX以及Solaris系統(tǒng)I/O性能的特性(例如直接I/O),但是說(shuō)到底Linux不是基于高性能多線程I/O進(jìn)行設(shè)計(jì)的。
有很多方面對(duì)Linux的性能造成了限制,例如與其他操作系統(tǒng)相比的頁(yè)面大小、Linux在直接I/O和頁(yè)面調(diào)整方面的限制、以及Linux不允許通過(guò)I/O請(qǐng)求的大小來(lái)自動(dòng)直連I/O——我曾經(jīng)發(fā)現(xiàn)Linux內(nèi)核將較大的(大于512MB)的I/O請(qǐng)求分解成128KB的請(qǐng)求。因?yàn)樽畛鮈inux I/O性能和文件系統(tǒng)的設(shè)計(jì)目標(biāo)是為了取代Windows操作系統(tǒng),所以出現(xiàn)這種問(wèn)題并不奇怪。
Linux還存在其他一些問(wèn)題,對(duì)初用者來(lái)說(shuō)缺少專門的人來(lái)負(fù)責(zé)。如果你發(fā)現(xiàn)有問(wèn)題,許多人都表示會(huì)來(lái)對(duì)它進(jìn)行修復(fù),編寫Linux程序的人也許不會(huì)對(duì)你的問(wèn)題做出回應(yīng)。如果一家Linux廠商答應(yīng)對(duì)你發(fā)現(xiàn)的故障進(jìn)行修復(fù),這并不意味著Linux部門將接受他們的許諾,或者馬上接受。對(duì)故障打補(bǔ)丁的同時(shí)可能會(huì)帶來(lái)維護(hù)上的一些問(wèn)題。
Linux文件系統(tǒng)和Linux內(nèi)核設(shè)計(jì)的目標(biāo)應(yīng)該是解決一些完全不同于AIX或者Solaris的故障問(wèn)題,如果你發(fā)現(xiàn)有故障問(wèn)題的話,應(yīng)該直接找Linux部門而不是IBM或者Sun。如果你使用的是AIX或者Solaris,向IBM或者Sun求助的話,他們不會(huì)說(shuō)沒(méi)有辦法解決的。
Linux文件系統(tǒng)
記住,大多數(shù)Linux文件系統(tǒng)的設(shè)計(jì)目標(biāo)都是為了取代NTFS,而不是為了取代像GPFS(IBM)、StorNext(昆騰)或者QFS(Sun)這些高性能文件系統(tǒng)的。這些文件系統(tǒng)主要是針對(duì)流式I/O進(jìn)行設(shè)計(jì)的,我們現(xiàn)在知道流式I/O對(duì)高速IPOS和數(shù)據(jù)庫(kù)讀取都是十分重要的。
目前常用的Linux文件系統(tǒng)(EXT3、EXT4以及XFS)在很長(zhǎng)一段時(shí)間內(nèi)都沒(méi)有發(fā)生過(guò)結(jié)構(gòu)上重大的變化。EXT2和EXT3在某些方面改進(jìn)之后升級(jí)到了EXT4,但是像RAID條帶的超級(jí)塊以及首個(gè)元數(shù)據(jù)分配等簡(jiǎn)單特性都沒(méi)有發(fā)生改變。
另外,像RAID條帶值的附件文件系統(tǒng)元數(shù)據(jù)區(qū)和間接分配,其中間接分配是支持較小分配(最大不超過(guò)4KB)以及所需的較大分配的固定值。拿一個(gè)200TB的系統(tǒng)來(lái)說(shuō),它使用EXT3支持的4KB分區(qū)來(lái)實(shí)現(xiàn)537億個(gè)分區(qū)組成的200TB系統(tǒng)。如果是使用8MB的企業(yè)文件系統(tǒng),就是262億個(gè)可管理的分區(qū)。這種分配圖甚至可以在內(nèi)存中支持相同數(shù)量的分區(qū)。XFS文件系統(tǒng)與EXT3有著類似的特點(diǎn),如果Linux頁(yè)面大小是64KB的話分區(qū)也可以達(dá)到64KB,但是仍然存在超級(jí)塊的調(diào)整、元數(shù)據(jù)區(qū)和其他一些問(wèn)題。
Linux占據(jù)一席之地
這并不是說(shuō)我是Linux的反對(duì)者,這只因?yàn)槲也皇茿IX或者Solaris的支持者。我甚至不是反對(duì)Windows,因?yàn)槲以谖业碾娔X上就使用的是Windows界面。但是我相信現(xiàn)在Linux文件系統(tǒng)還不足以取代高性能、高可擴(kuò)展性的SMP文件系統(tǒng)。計(jì)算機(jī)是工具,操作系統(tǒng)和文件系統(tǒng)也是工具。沒(méi)有人會(huì)用鏈鋸替代豎鋸,這種類比同樣也適用于操作系統(tǒng)、文件系統(tǒng)以及它們運(yùn)行在的硬件設(shè)備。
我知道有很多人每天都會(huì)用到微軟的Word、Excel、PowerPoint和Visio。如果所有這些應(yīng)用都不能在Windows類似的操作系統(tǒng)中運(yùn)行的話,我可能會(huì)使用其中一些,但是我發(fā)現(xiàn)其中存在一些不兼容性,很久之前有人向我證明了可以兼容之后我才決定采用Windows系統(tǒng)。這里我認(rèn)為每臺(tái)計(jì)算機(jī)都是一個(gè)工具并且有它自己的用途?,F(xiàn)在沒(méi)有哪個(gè)計(jì)算機(jī)或者文件系統(tǒng)可以滿足所有應(yīng)用的需要。這并不奇怪,據(jù)我所知,Linux不支持大型文件系統(tǒng)的單實(shí)例以及為滿足高性能需求從小型文件系統(tǒng)向大型文件系統(tǒng)的拓展。而且我認(rèn)為這在短時(shí)期內(nèi)是不會(huì)有所改變的。