檔案系統
此條目可參照英語維基百科相應條目來擴充。 |
電腦的檔案系統是一種儲存和組織電腦數據的方法,它使得對其存取和尋找變得容易,檔案系統使用檔案和樹形目錄的抽象邏輯概念代替了硬碟和光碟等物理裝置使用數據塊的概念,用戶使用檔案系統來儲存數據不必關心數據實際儲存在硬碟(或者光碟)的地址為多少的數據塊上,只需要記住這個檔案的所屬目錄和檔名。在寫入新數據之前,用戶不必關心硬碟上的那個塊地址沒有被使用,硬碟上的儲存空間管理(分配和釋放)功能由檔案系統自動完成,用戶只需要記住數據被寫入到了哪個檔案中。
檔案系統通常使用硬碟和光碟這樣的儲存裝置,並維護檔案在裝置中的物理位置。但是,實際上檔案系統也可能僅僅是一種存取資料的介面而已,實際的數據可能是通過網絡協定(如NFS、SMB、9P等)提供的或者暫存於主記憶體上,甚至可能根本沒有對應的檔案(如proc檔案系統)。
嚴格地說,檔案系統是一套實現了數據的儲存、分級組織、存取和取得等操作的抽象資料類型(Abstract data type)。
概述
[編輯]檔案系統是一種用於向用戶提供底層數據存取的機制。它將裝置中的空間劃分為特定大小的塊(或者稱為簇),一般每塊512位元組。數據儲存在這些塊中,大小被修正為佔用整數個塊。由檔案系統軟件來負責將這些塊組織為檔案和目錄,並記錄哪些塊被分配給了哪個檔案,以及哪些塊沒有被使用。
不過,檔案系統並不一定只在特定儲存裝置上出現。它是數據的組織者和提供者,至於它的底層,可以是磁碟,也可以是其它動態生成數據的裝置(比如網絡裝置)。
檔名
[編輯]在檔案系統中,檔名是用於定位儲存位置。大多數的檔案系統對檔名的長度有限制。在一些檔案系統中,檔名是大小寫不敏感(如「AAA」和「aaa」指的是同一個檔案);在另一些檔案系統中則大小寫敏感。大多現今的檔案系統允許檔名包含非常多的Unicode字元集的字元。然而在大多數檔案系統的介面中,會限制某些特殊字元出現在檔名中。(檔案系統可能會用這些特殊字元來表示一個裝置、裝置類型、目錄字首、或檔案類型)然而,這些特殊的字元會允許存在於用雙引號內的檔名。方便起見,一般不建議在檔名中包含特殊字元。
檔案相關資料(Metadata)
[編輯]其它檔案儲存資訊常常伴隨着檔案自身儲存在檔案系統中。檔案長度可能是分配給這個檔案的區塊數,也可能是這個檔案實際的位元組數。檔案最後修改時間也許記錄在檔案的時間戳中。有的檔案系統還儲存檔案的建立時間,最後存取時間及屬性修改時間。(不過大多數早期的檔案系統不記錄檔案的時間資訊)其它資訊還包括檔案裝置類型(如:區塊數,字元集,套介面,子目錄等等),檔案所有者的ID,組ID,還有存取權限(如:唯讀,可執行等等)。
安全存取
[編輯]針對基本檔案系統操作的安全存取可以通過存取控制列表或capabilities實現。研究表明存取控制列表難以保證安全,這也就是研發中的檔案系統傾向於使用capabilities的原因。然而目前多數商業性的檔案系統仍然使用存取控制列表。
類型
[編輯]磁碟檔案系統
[編輯]磁碟檔案系統是一種設計用來利用數據儲存裝置來儲存電腦檔案的檔案系統,最常用的數據儲存裝置是磁碟機,可以直接或者間接地連接到電腦上。例如:檔案組態表(FAT12、FAT16、FAT32、exFAT)、New Technology File System、分層檔案系統HFS、HFS Plus、延伸檔案系統(ext1、ext2、ext3、ext4)、ODS、btrfs、XFS、UFS、ZFS。有些檔案系統是行程檔案系統(也有譯作紀錄檔檔案系統)或者追蹤檔案系統。
光碟
[編輯]快閃記憶體檔案系統
[編輯]快閃記憶體檔案系統是一種設計用來在快閃記憶體上儲存檔案的檔案系統。隨着流動裝置的普及和快閃記憶體容量的增加,這類檔案系統越來越流行。
儘管磁碟檔案系統也能在快閃記憶體上使用,但快閃記憶體檔案系統是快閃記憶體裝置的首選,理由如下:
- 擦除區塊:快閃記憶體的區塊在重新寫入前必須先進行擦除。擦除區塊會佔用相當可觀的時間。因此,在裝置空閒的時候擦除未使用的區塊有助於提高速度,而寫入數據時也可以優先使用已經擦除的區塊。
- 隨機存取:由於在磁碟上定址有很大的延遲,磁碟檔案系統有針對定址的最佳化,以儘量避免定址。但快閃記憶體沒有定址延遲。
- 寫入平衡(Wear levelling):快閃記憶體中經常寫入的區塊往往容易損壞。快閃記憶體檔案系統的設計可以使數據均勻地寫到整個裝置。
紀錄檔檔案系統具有快閃記憶體檔案系統需要的特性,這類檔案系統包括JFFS2和YAFFS。也有為了避免紀錄檔頻繁寫入而導致快閃記憶體壽命衰減的非紀錄檔檔案系統,如exFAT。
資料庫檔案系統
[編輯]檔案管理方面的一個新概念是一種基於資料庫的檔案系統的概念。不再(或者不僅僅)使用分層結構管理,檔案按照他們的特徵進行區分,如檔案類型、專題、作者或者亞數據進行區分。於是檔案檢索就可以按照SQL風格甚至自然語言風格進行。
網絡檔案系統
[編輯]網絡檔案系統(NFS,Network File System)是一種將遠端主機上的分區(目錄)經網絡掛載到本地系統的一種機制。
與作業系統的關係
[編輯]DOS / Microsoft Windows支援的檔案系統
[編輯]Windows | FAT12/FAT16 | FAT32/VFAT | FAT64/exFAT | NTFS |
---|---|---|---|---|
Windows 3.x或更早 (MS-DOS 6.22) (PC-DOS 7.0) |
可讀/可寫 | 不支援 | 不支援 | 不支援 |
Windows 95 | 可讀/可寫 | 不支援 | 不支援 | 不支援 |
Windows 95(OSR2以後) Windows 98(含SE) ME |
可讀/可寫 | 可讀/可寫 | 不支援 | 不支援 |
Windows NT 4.0 及以前 | 可讀/可寫 | 不支援 | 不支援 | 可讀/可寫 |
2000 Windows XP Windows Vista Server 2003 Server 2008 (R2) Windows 7 Windows 8 Server 2012 (R2) Windows 8.1 Windows 10 |
可讀/可寫 | 可讀/可寫 | 可讀/可寫 | 可讀/可寫 |
Windows CE | 可讀/可寫 | 可讀/可寫 | 可讀/可寫 | 不支援 |
注意:除非NT4安裝了FAT32 For Windows NT 4.0否則該系統不支援FAT32
Linux支援的檔案系統
[編輯]隨着Linux的不斷發展,它所支援的檔案系統也在迅速擴充,Linux系統核心可以支援十多種檔案系統類型:Btrfs、JFS、ReiserFS、exFAT、ext、ext2、ext3、ext4、XFS、ISO 9660、Minix、MSDOS、UMSDOS、VFAT、NTFS(Linux Kernel內建的NTFS驅動程式,寫入功能不穩定)、HPFS、NFS、SMB、SysV、PROC等。
注意:部分Linux發行版的Kernel預設不編譯Kernel內建的NTFS檔案系統支援,常見的在Linux下讀寫NTFS的解決方法是安裝NTFS-3G或ufsd等NTFS驅動程式。部分Linux發行版對NTFS的支援度並不高。
UNIX及BSD作業系統下的檔案系統
[編輯]柏克萊加州大學開發早期的伯克利快速檔案系統(Berkeley Fast File System),再由各UNIX廠商開發不同的檔案系統,包括IRIX上的XFS、IBM AIX的JFS、HP HP-UNIX的VxFS、迪吉多Tru64的AdvFS[2]及Solaris的ZFS。
macOS(Mac OS X)的檔案系統
[編輯]從1998年到2016年間使用HFS+,再早採用HFS。從2016年發佈的macOS Sierra起,使用蘋果檔案系統(APFS)。
Bell實驗室的PLAN9檔案系統
[編輯]OpenVMS的檔案系統
[編輯]OpenVMS為Wang Mainframe所使用的Operation System,以搭配Wang王安博士發明的Magnetic Drum的儲存裝置。
IBM大型電腦MVS的檔案系統
[編輯]參見
[編輯]參考文獻
[編輯]- ^ (英文) Giampaolo, Dominic. Practical File System Design with the Be File System (PDF). Morgan Kaufmann. 1999 [2010-12-27]. ISBN 1-55860-497-9. (原始內容 (PDF)存檔於2017-02-13).
- ^ (英文) AdvFS內部設計文件(AdvFS Design Docs). SourceForge.net. [2010-12-27]. (原始內容存檔於2020-06-02).