• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 297,  comments - 15,  trackbacks - 0
            文件系統文件存在的物理空間。在Linux系統中,每個分區都是一個文件系統,都有自己的目錄層次結構。Linux的最重要特征之一就是支持多種文件系統,這樣它更加靈活,并可以和許多其它種操作系統共存。Virtual File System(虛擬文件系統)使得Linux可以支持多個不同的文件系統。由于系統已將Linux文件系統的所有細節進行了轉換,所以Linux核心的其它部分及系統中運行的程序將看到統一的文件系統。Linux的虛擬文件系統允許用戶同時能透明地安裝許多不同的文件系統。虛擬文件系統是為Linux用戶提供快速且高效的文件訪問服務而設計的。
                隨著Linux的不斷發展,它所支持的文件格式系統也在迅速擴充。特別是Linux 2.4內核正式推出后,出現了大量新的文件系統,其中包括日志文件系統ext3、ReiserFS、XFS、JFS和其它文件系統。Linux系統核心可以支持十多種文件系統類型:JFS、 ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
                下面介紹Linux下幾個最常用的文件系統,其中包括ext、ext2、ext3、JFS、XFS、ReiserFS等。
             
            ext
                ext是第一個專門為Linux開發的文件系統類型,叫做擴展文件系統。它是1992年4月完成的,對Linux早期的發展產生了重要作用。但是,由于其在穩定性、速度和兼容性上存在許多缺陷,現在已經很少使用了。
             
            ext2
                ext2是為解決ext文件系統的缺陷而設計的可擴展的、高性能的文件系統,它又被稱為二級擴展文件系統。ext2是1993年發布的,設計者是Rey Card。它是Linux文件系統類型中使用最多的格式,并且在速度和CPU利用率上較為突出,是GNU/Linux系統中標準的文件系統。它存取文件的性能極好,對于中、小型的文件更顯示出優勢,這主要得益于其簇快取層的優良設計。ext2可以支持256字節的長文件名,其單一文件大小和文件系統本身的容量上限與文件系統本身的簇大小有關。在常見的Intel x86兼容處理器的系統中,簇最大為4KB,單一文件大小上限為2048GB, 而文件系統的容量上限為6384GB。盡管Linux可以支持種類繁多的文件系統,但是2000年以前幾乎所有的Linux發行版都使用ext2作為默認的文件系統。 
                ext2也有一些問題。由于它的設計者主要考慮的是文件系統性能方面的問題,而在寫入文件內容的同時,并沒有寫入文件的meta-data(和文件有關的信息,例如權限、所有者及創建和訪問時間)。換句話說,Linux先寫入文件的內容,然后等到有空的時候才寫入文件的meta-data。如果出現寫入文件內容之后,但在寫入文件的meta-data之前系統突然斷電,就可能造成文件系統就會處于不一致的狀態。在一個有大量文件操作的系統中,出現這種情況會導致很嚴重的后果。另外,由于目前Linux的 2.4內核所能使用的單一分割區最大只有2048GB,盡管文件系統的容量上限為6384G,但是實際上能使用的文件系統容量最多也只有2048GB。
             
            ext3
                在講解ext3、JFS、XFS、ReiserFS日志格式文件系統之前,先介紹一些日志式文件系統基礎。
                日志式文件系統起源于Oracle、Sybase等大型數據庫。由于數據庫操作往往是由多個相關的、相互依賴的子操作組成,任何一個子操作的失敗都意味著整個操作的無效性,對數據庫數據的任何修改都要恢復到操作以前的狀態。Linux日志式文件系統就是由此發展而來的。日志文件系統通過增加一個叫做日志的、新的數據結構來解決這個“fsck”問題。這個日志是位于磁盤上的結構。在對元數據做任何改變以前,文件系統驅動程序會向日志中寫入一個條目,這個條目描述了它將要做些什么,所以日志文件具有可伸縮性和健壯性。在分區中保存日志記錄文件好處是:文件系統寫操作首先是對記錄文件進行操作,若整個寫操作由于某種原因(如系統掉電)而中斷,則在下次系統啟動時就會讀日志記錄文件的內容,恢復到沒有完成的寫操作,這個過程一般只需要兩三分鐘時間。
                ext3是由開放資源社區開發的日志文件系統,早期主要開發人員是Stephen Tweedie。ext3被設計成是ext2的升級版本,盡可能方便用戶從ext2向ext3遷移。ext3在ext2的基礎上加入了記錄元數據的日志功能,努力保持向前和向后的兼容性,也就是在保有目前ext2的格式之下再加上日志功能。和ext2相比,ext3提供了更佳的安全性,這就是數據日志和元數據日志之間的不同。ext3是一種日志式文件系統,日志式文件系統的優越性在于由于文件系統都有快取層參與運作,如不使用時必須將文件系統卸下,以便將快取層的資料寫回磁盤中。因此,每當系統要關機時,必須將其所有的文件系統全部卸下后才能進行關機。如果在文件系統尚未卸下前就關機 (如停電),那么重開機后就會造成文件系統的資料不一致,故這時必須做文件系統的重整工作,將不一致與錯誤的地方修復。然而,這個過程是相當耗時的,特別是容量大的文件系統不能百分之百保證所有的資料都不會流失,特別在大型的服務器上可能會出現問題。除了與ext2兼容之外,ext3還通過共享ext2的元數據格式繼承了ext2的其它優點。比如,ext3用戶可以使用一個穩固的fsck工具。由于ext3基于ext2的代碼,所以它的磁盤格式和ext2的相同,這意味著一個干凈卸裝的ext3文件系統可以作為ext2文件系統毫無問題地重新掛裝。如果現在使用的是ext2文件系統,并且對數據安全性要求很高,這里建議考慮升級使用ext3。
                ext3最大的缺點是,它沒有現代文件系統所具有的、能提高文件數據處理速度和解壓的高性能。此外,使用ext3文件系統要注意硬盤限額問題,在這個問題解決之前,不推薦在重要的企業應用上采用ext3+Disk Quota(磁盤配額)。  
             
            JFS
                JFS是一種提供日志的字節級文件系統。該文件系統主要是為滿足服務器(從單處理器系統到高級多處理器和群集系統)的高吞吐量和可靠性需求而設計、開發的。JFS文件系統是為面向事務的高性能系統而開發的。在IBM的AIX系統上,JFS已經過較長時間的測試,結果表明它是可靠、快速和容易使用的。2000年2月,IBM宣布在一個開放資源許可證下移植Linux版本的JFS文件系統。JFS也是一個有大量用戶安裝使用的企業級文件系統,具有可伸縮性和健壯性。與非日志文件系統相比,它的突出優點是快速重啟能力,JFS能夠在幾秒或幾分鐘內就把文件系統恢復到一致狀態。雖然JFS主要是為滿足服務器(從單處理器系統到高級多處理器和群集系統)的高吞吐量和可靠性需求而設計的,但還可以用于想得到高性能和可靠性的客戶機配置,因為在系統崩潰時JFS能提供快速文件系統重啟時間,所以它是因特網文件服務器的關鍵技術。使用數據庫日志處理技術,JFS能在幾秒或幾分鐘之內把文件系統恢復到一致狀態。而在非日志文件系統中,文件恢復可能花費幾小時或幾天。
                JFS的缺點是,使用JFS日志文件系統性能上會有一定損失,系統資源占用的比率也偏高,因為當它保存一個日志時,系統需要寫許多數據。
             
            ReiserFS
                ReiserFS的第一次公開亮相是在1997年7月23日,Hans Reiser把他的基于平衡樹結構的ReiserFS文件系統在網上公布。ReiserFS 3.6.x(作為Linux 2.4一部分的版本)是由Hans Reiser和他的Namesys開發組共同開發設計的。SuSE Linux也對它的發展起了重大的幫助。Hans和他的組員們相信最好的文件系統是能夠有助于創建獨立的共享環境或命名空間的文件系統,應用程序可以在其中更直接、有效和有力地相互作用。為了實現這一目標,文件系統就應該滿足使用者對性能和功能方面的需要。那樣使用者就能夠繼續直接地使用文件系統,而不必建造運行在文件系統之上(如數據庫之類)的特殊目的層。ReiserFS 使用了特殊的、優化的平衡樹(每個文件系統一個)來組織所有的文件系統數據,這為其自身提供了非常不錯的性能改進,也能夠減輕文件系統設計上的人為約束。另一個使用平衡樹的好處就是,ReiserFS 能夠像其它大多數的下一代文件系統一樣,根據需要動態地分配索引節,而不必在文件系統創建時建立固定的索引節。這有助于文件系統更靈活地適應面臨的各種存儲需要,同時提供附加的空間有效率。
                ReiserFS被看作是一個更加激進和現代的文件系統。傳統的Unix文件系統是按磁盤塊來進行空間分配的,對于目錄和文件等的查找使用了簡單的線性查找。這些設計在當時是合適的,但隨著磁盤容量的增大和應用需求的增加,傳統文件系統在存儲效率、速度和功能上已顯得落后。在ReiserFS的下一個版本—Reiser 4,將提供了對事務的支持。ReiserFS突出的地方還在于其設計上著眼于實現一些未來的插件程序,這些插件程序可以提供訪問控制列表、超級鏈接,以及一些其它非常不錯的功能。在http://www.namesys.com/v4/v4.html中,有Reiser 4的介紹和性能測試。
                ReiserFS一個最受批評的缺點是,每升級一個版本都將要將磁盤重新格式化一次,而且它的安全性能和穩定性與ext3相比有一定的差距。因為ReiserFS文件系統還不能正確處理超長的文件目錄,如果創建一個超過768字符的文件目錄,并使用ls或其它echo命令,將有可能導致系統掛起。在http://www.namesys.com/ 網站可以了解關于ReiserFS的更多信息。
             
            XFS
                XFS是一種非常優秀的日志文件系統,它是由SGI于20世紀90年代初開發的。XFS推出后被業界稱為先進的、最具可升級性的文件系統技術。它是一個全64位、快速、穩固的日志文件系統,多年用于SGI的IRIX操作系統。當SGI決定支持Linux社區時,它將關鍵的基本架構技術授權于Linux,以開放資源形式發布了他們自己擁有的XFS的源代碼,并開始進行移植。此項工作進展得很快,目前已進入beta版階段。作為一個64位文件系統,XFS可以支持超大數量的文件(9000×1GB),可在大型2D和3D數據方面提供顯著的性能。XFS有能力預測其它文件系統薄弱環節,同時提供了在不妨礙性能的情況下增強可靠性和快速的事故恢復。
                XFS可為Linux和開放資源社區帶來如下新特性:
                * 可升級性 XFS被設計成可升級,以面對大多數的存儲容量和I/O存儲需求;可處理大型文件和包含巨大數量文件的大型目錄,以滿足21世紀快速增長的磁盤需求。XFS有能力動態地為文件分配索引空間,使系統形成高效支持大數量文件的能力。在它的支持下,用戶可使用的文件遠遠大于現在最大的文件系統
                * 優秀的I/O 性能 典型的現代服務器使用大型的條帶式磁盤陣列,以提供達數GB/秒的總帶寬。XFS可以很好地滿足I/O請求的大小和并發I/O請求的數量。XFS可作為root文件系統,并被LILO支持,也可以在NFS服務器上使用,并支持軟件磁盤陣列(RAID)和邏輯卷管理器(Logical Volume Manager,LVM)。
                由于XFS比較復雜,實施起來有一些難度(包括人員培訓等),所以目前XFS主要應用于Linux企業應用的高端。
             
            其它文件系統
                上面介紹了六種主要文件系統,下面簡單介紹一些其它文件系統
                * Minix 是Linux支持的第一個文件系統,對用戶有很多限制,性能低下,有些沒有時間標記,文件名最長l4個字符。Minix文件系統最大缺點是只能使用64MB的硬盤分區,所以目前已經沒有人使用它了。
                * Xia 是Minix文件系統修正后的版本,在一定程度上解決了文件名和文件系統大小的局限。但是沒有新的特色,目前很少有人使用。
                * ISO9660 標準CDROM文件系統,通用的Rock Ridge增強系統,允許長文件名。
                * NFS Sun公司推出的網絡文件系統,允許多臺計算機之間共享同一文件系統,易于從所有這些計算機上存取文件
                * SysV 是System V/Coherent在Linux平臺上的文件系統
             
                除了上面這些Linux文件系統外,Linux也可以支持基于Windows和Netware的文件系統,例如UMSDOS、MSDOS、VFAT、HPFS、SMB和NCPFS等。兼容這些文件系統對Linux用戶也是很重要的,畢竟在桌面環境下Windows文件系統還是很流行的,而Netware網絡也有許多用戶,Linux用戶也需要共享這些文件系統的數據。
                * UMSDOS Linux下的擴展MSDOS文件系統驅動,支持長文件名、所有者、允許權限、連接和設備文件。允許一個普通的MSDOS文件系統用于Linux,而且無須為它建立單獨的分區。
                * MSDOS 是在DOS、Windows和某些OS/2操作系統上使用的一種文件系統,其名稱采用“8+3”的形式,即8個字符的文件名加上3個字符的擴展名。
                * VFAT 是Windows 9x和Windows NT/2000下使用的一種DOS文件系統,其在DOS文件系統的基礎上增加了對長文件名的支持。
                * HPFS 高性能文件系統(High Performance File System,HPFS)是微軟的LAN Manager中的文件系統,同時也是IBM的LAN Server和OS/2的文件系統。HPFS能訪問較大的硬盤驅動器,提供了更多的組織特性,并改善了文件系統的安全特性。
                * SMB 是一種支持Windows for Workgroups、Windows NT和Lan Manager的基于SMB協議的網絡操作系統。
                * NCPFS 是一種Novell NetWare使用的NCP協議的網絡操作系統。
                * NTFS 是Windows NT/2000操作系統支持的、一個特別為網絡和磁盤配額、文件加密等管理安全特性設計的磁盤格式
               
                下面介紹些關于嵌入式 Linux 系統方面的文件格式
                * JFFS/JFFS2 文件系統
                JFFS文件系統是瑞典Axis Communications AB為嵌入式系統開發的日志文件系統
                JFFS1應用在Linux2.2以上版木中,JFFS2在Linux2.4內核和Ecos中。Linux的實現中,JFFS必須建立在MTD驅動程序的上層。這里MTD的作用是為JFFS提供操作NAND或者NOR芯片的接口。

            文件系統層次圖
                JFFS是針對以閃存為存儲介質的嵌入式系統,所以充分考慮了閃存的物理局限性,使用了盡可能高效的日志系統。和TrueFFS以及其他中間層驅動相比,JFFS是專門針對閃存的文件系統,這個文件系統除了有日志功能,還包含了TrueFFS中的負載平衡、垃圾收集等功能。另外一個重要特點是這個文件系統是源代碼公開的,方便了學習和使用。此外使用了日志系統,使文件系統更加可靠。
             
                * YAFFS (Yet Another Flash File System),是一種類似于JFFS/JFFS2的專門為Flash設計的嵌入式文件系統。與JFFS相比,它減少了一些功能,因此速度更快、占用內存更少。
                YAFFS和JFFS都提供了寫均衡,垃圾收集等底層操作。它們的不同之處在于:
                (1)、JFFS是一種日志文件系統,通過日志機制保證文件系統的穩定性。YAFFS僅僅借鑒了日志系統的思想,不提供日志機能,所以穩定性不如JFFS,但是資源占用少。
                (2)、JFFS中使用多級鏈表管理需要回收的臟塊,并且使用系統生成偽隨機變量決定要回收的塊,通過這種方法能提供較好的寫均衡,在YAFFS中是從頭到尾對塊搜索,所以在垃圾收集上JFFS的速度慢,但是能延長NAND的壽命。
                (3)、JFFS支持文件壓縮,適合存儲容量較小的系統;YAFFS不支持壓縮,更適合存儲容量大的系統
                YAFFS還帶有NAND芯片驅動,并為嵌入式系統提供了直接訪問文件系統的API,用戶可以不使用Linux中的MTD和VFS,直接對文件進行操作。NAND Flash大多采用MTD+YAFFS的模式。MTD( Memory Technology Devices,內存技術設備)是對Flash操作的接口,提供了一系列的標準函數,將硬件驅動設計和系統程序設計分開。
             
                * cramfs 在嵌入式的環境之下,內存和外存資源都需要節約使用。如果使用RAMDISK方式來使用文件系統,那么在系統運行之后,首先要把外存(Flash)上的映像文件解壓縮到內存中,構造起RAMDISK環境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在外存中占據了空間(以壓縮后的形式存在),而且還在內存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環境下盡量節省資源的要求。
                使用 cramfs 就是一種解決這個問題的方式。cramfs是一個壓縮式的文件系統,它并不需要一次性地將文件系統中的所有內容都解壓縮到內存之中,而只是在系統需要訪問某個位置的數據的時侯,馬上計算出該數據在cramfs中的位置,將其實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統中需要讀取的數據。cramfs中的解壓縮以及解壓縮之后的內存中數據存放位置都是由cramfs文件系統本身進行維護的,用戶并不需要了解具體的實現過程,因此這種方式增強了透明度,對開發人員來說,既方便,又節省了存儲空間。
                cramfs擁有以下一些特性:
                采用實時解壓縮方式,但解壓縮的時侯有延遲。
                cramfs的數據都是經過處理、打包的,對其進行寫操作有一定困難。所以cramfs不支持寫操作,這個特性剛好適合嵌入式應用中使用Flash存儲文件系統的場合。
                在cramfs中,文件最大不能超過16MB。
                支持組標識(gid),但是mkcramfs只將gid的低8位保存下來,因此只有這8位是有效的。
                支持硬鏈接。但是cramfs并沒有完全處理好,硬鏈接的文件屬性中,鏈接數仍然為1.
                cramfs的目錄中,沒有“.”和“..”這兩項。因此,cramfs中的目錄的鏈接數通常也僅有一個。
                cramfs中,不會保存文件的時間戳(timestamps)信息。當然,正在使用的文件由于inode保存在內存中,因此其時間可以暫時地變更為最新時間,但是不會保存到cramfs文件系統中去。
                當前版本的cramfs只支持PAGE_CACHE_SIZE為4096的內核。因此,如果發現cramfs不能正常讀寫的時侯,可以檢查一下內核的參數設置。
             
            察看Linux文件類型
                不同版本的Linux所支持的文件系統類型和種類都有所不同,如何知道自己使用的Linux發行版的文件系統類型呢?下面以筆者使用的Mandrake Linux 8.2為例,講解如何操作。
                以超級用戶權限登陸Linux,進入/Lib/modules/2.4.18-6mdk/kernel/fs目錄,執行下面命令:#ls
                注意,不同Linux發行版本的fs目錄的位置可能有些不同。/Lib/modules/2.4.18-6mdk/kernel/fs中會顯示當前系統所支持的文件系統種類。 
                Mandrake Linux 8.2支持的文件系統非常多,系統核心支持十多種文件系統類型:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。 
                文件系統是操作系統用于明確磁盤或分區上文件的方法和數據結構,即在磁盤上組織文件的方法。文件系統是整個操作系統中重要的組成部分,是操作系統正常運行的基本條件。了解Linux文件系統對于深入學習、研究Linux是非常重要的。
            from:
            posted on 2010-01-26 15:34 chatler 閱讀(476) 評論(0)  編輯 收藏 引用 所屬分類: storageFileSystem
            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            精品乱码久久久久久久| 精品久久久久久无码专区| 亚洲va中文字幕无码久久不卡| 91精品国产综合久久四虎久久无码一级| 亚洲国产精品久久电影欧美| 久久综合五月丁香久久激情| 国产免费久久久久久无码| 伊人色综合久久天天| 免费观看久久精彩视频| 久久精品国产91久久麻豆自制 | 国产L精品国产亚洲区久久 | 97久久超碰国产精品2021| 国产高潮久久免费观看| av午夜福利一片免费看久久| 99久久精品国产一区二区 | 99久久免费国产精品热| 国产亚洲综合久久系列| 99久久er这里只有精品18| AAA级久久久精品无码片| 国产成人精品久久一区二区三区| 久久精品亚洲精品国产色婷| 国产午夜免费高清久久影院| 狠狠色婷婷综合天天久久丁香| 国产91久久精品一区二区| 午夜不卡888久久| 久久久国产精品| 国产精品久久久久久久久软件| 97精品依人久久久大香线蕉97| 久久国产精品77777| 91精品久久久久久无码| 日日狠狠久久偷偷色综合0| 久久综合88熟人妻| 青青青国产成人久久111网站| 国产AV影片久久久久久| 欧美国产成人久久精品| AV无码久久久久不卡蜜桃| 久久精品国产72国产精福利| 久久天天躁狠狠躁夜夜躁2014| 久久国产精品99精品国产| 久久久久女教师免费一区| 久久99久久99精品免视看动漫|