在此節選了網絡 上的兩篇關于2.6內核文件系統的文章, 并附上本人截下的幾副圖, 用于2.4與2.6相比較 Linux 2.6內核的精彩世界 Joseph Praneich 文件系統 Li" name="description" />
![]() | ||||
![]() |
在此節選了網絡上的兩篇關于2.6內核文件系統的文章, 并附上本人截下的幾副圖, 用于2.4與2.6相比較
![]() | ||||
![]() | Linux 2.6內核的精彩世界 |
文件系統
Linux(或其他一些系統)下塊設備的最常見用法是在塊設備上面建立一個文件系統。相對Linux 2.4而言,Linux 2.6對于文件系統的支持在很多方面都有大的改進。關鍵的變化包括對擴展屬性(extended attributes)以及POSIX標準的訪問控制(aclearcase/" target="_blank" >ccess controls)的支持。
EXT2/EXT3文件系統作為多數Linux系統缺省安裝的文件系統,是在2.6中改進最大的一個。最主要的變化是對擴展屬性的支持,也即給指定的文件在文件系統中嵌入一些元數據(metadata)。一些擴展屬性被系統使用,只能由root用戶進行讀寫。很多其他操作系統,如Windows和MacOS系統已經大量地使用了這種擴展屬性。不幸的是,UNIX系的操作系統一般都還沒有很好地支持擴展屬性,很多用戶級的程序(比如tar)需要進行更新才能保存和轉儲這些擴展屬性信息。這是Linux成長的又一方面;Linux對擴展屬性的支持正在成熟。
新的擴展屬性子系統的第一個用途就是實現POSIX訪問控制鏈表。POSIX訪問控制是標準UNIX權限控制的超集,支持更細粒度的訪問控制。必要的話(比如從NFS輸出文件的時候),這些訪問控制可以被映射到標準的user/group權限控制上。除了以上,EXT3還有其他一些小的變化。文件系統日志提交(commit)的時間能夠進行調整得更加適合于筆記本電腦(處于省電模式時,可能會加速驅動器);缺省的加載選項可以保存在文件系統自身之中(這樣不用每次加載時都輸入加載選項);可以標記一個目錄為"indexed"以加速在這個目錄中的文件查找。
Linux對文件系統層還進行了大量的改進以兼容PC機的主流操作系統。首先,Linux 2.6支持Windows的邏輯卷管理器(即動態磁盤Dynamic Disks)。這個是Windows XP及后續版本中新的分區表機制,能夠很方便的支持多分區系統中的分區大小的調整以及新分區的創建。(當然,Linux系統不一定會馬上使用這一機制)其次,Linux 2.6對NTFS文件系統的支持也進行了重寫,現在能以讀/寫模式安裝一個NTFS卷。寫支持仍處于試驗階段,在逐步改進;最終的內核發布版中可能含有也可能不含有寫支持這一部分。最后,Linux對FAT12(很老的系統或軟盤上使用的DOS文件系統)的支持中消除了使用一些MP3播放器時所遇到的bug。跟蹤PC領域的其他一些技術將一直是Linux核心向前發展的一個重要環節。
文件系統部分在與其他操作系統的兼容性方面也有改進。對HPFS文件系統(OS/2和其他系統中使用)的擴展屬性的支持有了改進。OS/2風格的擴展屬性被分離到另一個的名字空間中。XFS文件系統也得到了更新,以達到與IRIX操作系統的磁盤級(on-disk)兼容。
此外,Linux文件系統中還有很多分散的變化。配額(quota)管理進行了重寫以便系統可以支持更多的用戶;用戶可以標記目錄為同步,從而所有變化(增加文件等)都是原子的(這一點對于郵件系統和基于目錄的數據庫系統尤為重要,而且在磁盤故障的恢復方面也更好一些);透明壓縮功能(僅Linux支持的擴展)被加到ISO9660文件系統(CD-ROM中使用)中。最后,一個新的基于內存的文件系統(hugetlbfs)被創建;創建該文件系統旨在更好地支持基于共享內存的數據庫。
網絡文件系統
Linux對網絡文件系統的支持構建在Linux健壯的網絡協議支持之上,它也同樣健壯。安裝或者輸出(export)一個網絡文件系統,是需要內核直接參與的為數不多的幾個上層網絡相關操作之一。(另外比較明顯的還有對于網絡塊設備的支持,在2.6中沒有特別大的改變,并且也只是在類似文件系統操作的特定應用中使用。)所有其他的網絡相關操作都可以被放到用戶空間去,而不需要核心開發人員去考慮。
在Linux和類UNIX世界中,最普遍的網絡文件系統是一個名為Network File System的文件系統,簡稱NFS。
NFS是一個復雜的文件共享協議,跟UNIX特別是Sun Solaris有相當深厚的淵源??梢允褂肨CP或UDP作為NFS的主要傳輸協議,但也需要其他一些子協議,這些協議又各自運行在RPC(遠程過程調用)協議之上。這其中包括獨立的用于認證的mount協議以及用于文件鎖的NLM(network lock manager)。(通常的實現版本同時也跟其他一些基于RPC的協議緊密地結合在一起,比如用于身份驗證的NIS-網絡信息服務--用于認證。NIS在Linux機器上沒有得到廣泛應用,主要因為它缺乏安全性。)可能正是因為NFS協議如此的復雜性,才沒有被作為"Internet協議"廣泛接受。
Linux 2.6中,NFS文件系統得到了很大的更新和改進。最大的改進就是實驗性地支持新的并且還沒有被廣泛接受的NFSv4協議(以前的linux版本支持NFS2和NFS3兩種協議)在客戶端和服務器端的實現。新的版本有更強、更安全的身份認證(采用加密技術),支持更智能化的鎖管理,支持偽文件系統等。Linux還沒有實現所有NFS4的新特征,但是目前的版本已經比較穩定并且能夠支持一些產品級的應用。并且,基于Linux的NFS服務端的實現已得到改進,從而具有了更好的擴展性,更好的完整性(支持UDP還支持TCP),更健壯(文件系統在輸出文件的時候能夠進行調整以維持它們自有的一些特征),更簡便的管理(通過新的nfsd文件系統,而不再是系統調用)。還有其他方面的一些改進,比如分離lockd和nfsd,支持零拷貝傳輸等。NFS客戶端也因為底層RPC協議在緩存機制、UDP連接控制以及其他在TCP協議上的改進而受益。Linux支持NFS共享卷作為根文件系統的功能也因為核心對TCP協議上的NFS的改進而改進。
除了改進對UNIX風格的網絡文件系統的支持,Linux 2.6對于Windows類型的網絡文件系統的支持也進行了改進。Windows服務器(也包括OS/2和其他一些操作系統)的標準共享文件系統是遵循SMB(server message block)協議的,Linux核心在SMB協議的客戶端對該協議的很多版本都已經有了非常優秀的支持。然而,Windows2000將SMB協議的一個超集的升級版標準化了,即熟知的CIFS("common internet filesystem")。CIFS修改的主要目的是簡化與精煉SMB協議中一些比較混亂的部分。(注:協議之前的定義很松散,甚至會出現Win95/98/ME版與WinNT/Win2k版不兼容的情況。)CIFS達到了修改的目的,并且增加了UNICODE支持,改善了文件鎖,支持硬鏈接,徹底消除了對NetBIOS的依賴,并給Windows用戶增加了一些新的特征。既然Linux用戶不打算始終呆在被遺忘的角落(譯者注:CIFS是Windows系統提出的標準,之前僅在Windows系統之上有實現),Linux 2.6核心對本地安裝CIFS文件系統的部分徹底進行了重寫。Linux 2.6現在也支持SMB和CIFS的擴展--SMB-UNIX,該擴展使得Linux可以訪問SMB服務器(比如Samba)上的可能存在的非Windows的文件類型(比如設備節點和符號鏈接)。
盡管現在已經不常見到,但是Linux還是沒有完全忘記Novell NetWare用戶。Linux 2.6最多允許256個Linux客戶端安裝同一個使用NCP(NetWare Core Protocol)文件系統驅動的NetWare卷。
Linux 2.6也加入了相對新的一些分布式網絡文件系統(即在一個邏輯卷上的文件可以分布在多個節點中)的支持。除了Linux 2.4中引入的CODA文件系統,Linux現在也包含對另兩個分布式文件系統:AFS和InterMezzo的支持。AFS,即the Andrew filesystem(如此命名是因為它最初是CMU開發的),特性非常有限,目前只支持讀操作。另一個新支持的文件系統InterMezzo(也是CMU開發的)也在Linux2.6中得到支持;它具有一些更為先進的特性,如:無連接操作(工作在客戶端的緩存中),適合要求高可用性的應用,在那些應用環境中,需要保證存儲區永遠可用。同時它也支持保持數據在多個計算機之間(比如筆記本電腦、PDA和桌面電腦)同步的應用。很多對這些新的文件系統提供支持的項目都是在Linux平臺上實現的,這也使得Linux能夠走在對這些新特性支持的最前面。
Linux 2.6內核新特性比較 |
作者:閆紅 余海發 2.文件系統 |