檔案系統(file system)

檔案系統

file system一般指本詞條

檔案系統是作業系統用於明確存儲設備(常見的是磁碟,也有基於NAND Flash的固態硬碟)或分區上的檔案的方法和數據結構;即在存儲設備上組織檔案的方法。作業系統中負責管理和存儲檔案信息的軟體機構稱為檔案管理系統,簡稱檔案系統。檔案系統由三部分組成:檔案系統的接口,對對象操縱和管理的軟體集合,對象及屬性。從系統角度來看,檔案系統是對檔案存儲設備的空間進行組織和分配,負責檔案存儲並對存入的檔案進行保護和檢索的系統。具體地說,它負責為用戶建立檔案,存入、讀出、修改、轉儲檔案,控制檔案的存取,當用戶不再使用時撤銷檔案等。

基本介紹

  • 中文名:檔案系統
  • 外文名:file system
  • 類別:作業系統
  • 目的:為了管理空間
簡介,功能,代碼,FAT,NTFS,CDFS,exFAT,RAW,Ext,Ext2,Ext3,Ext4,Btrfs,ZFS,HFS,HFS檔案系統概念,HFS檔案系統開發過程,構成方式,HFS+,ReiserFS,JFS,VMFS,XFS,UFS,VXFS,ReFS,WBFS,PFS,

簡介

在計算機中,檔案系統(file system)是命名檔案及放置檔案的邏輯存儲和恢復的系統。DOS、Windows、OS/2、Macintosh和UNIX-based作業系統都有檔案系統,在此系統中檔案被放置在分等級的(樹狀)結構中的某一處。檔案被放置進目錄(Windows中的資料夾)或子目錄,在樹狀結構中你希望的位置中。
檔案系統指定命名檔案的規則。這些規則包括檔案名稱的字元數最大量,哪種字元可以使用,以及某些系統中檔案名稱後綴可以有多長。檔案系統還包括通過目錄結構找到檔案的指定路徑的格式。
檔案系統是軟體系統的一部分,它的存在使得套用可以方便的使用抽象命名的數據對象和大小可變的空間。

功能

檔案的系統是作業系統用於明確磁碟或分區上的檔案的方法和數據結構;即在磁碟上組織檔案的方法。也指用於存儲檔案的磁碟或分區,或檔案系統種類。因此,可以說"我有2個檔案系統"意思是他有2個分區,一個存檔案,或他用 "擴展檔案系統",意思是檔案系統的種類。
結構圖結構圖
磁碟或分區和它所包括的檔案系統的不同是很重要的。少數程式(包括最有理由的產生檔案系統的程式)直接對磁碟或分區的原始扇區進行操作;這可能破壞一個存在的檔案系統。大部分程式基於檔案系統進行操作,在不同種檔案系統上不能工作。
一個分區或磁碟在作為檔案系統使用前,需要初始化,並將記錄數據結構寫到磁碟上。這個過程就叫建立檔案系統。
大部分UNIX檔案系統種類具有類似的通用結構,即使細節有些變化。其中心概念是超級塊superblock,i節點inode,數據塊data block,目錄塊directory block,和間接塊indirection block。超級塊包括檔案系統的總體信息,比如大小(其準確信息依賴檔案系統)。i節點包括除了名字外的一個檔案的所有信息,名字與i節點數目一起存在目錄中,目錄條目包括檔案名稱和檔案的i節點數目。i節點包括幾個數據塊的數目,用於存儲檔案的數據。i節點中只有少量數據塊數的空間,如果需要更多,會動態分配指向數據塊的指針空間。這些動態分配的塊是間接塊;為了找到數據塊,這名字指出它必須先找到間接塊的號碼。
UNIX檔案系統通常允許在檔案中產生孔,意思是檔案系統假裝檔案中有一個特殊的位置只有0位元組,但沒有為這檔案的這個位置保留實際的磁碟空間。這對小的二進制檔案經常發生,Linux共享庫、一些資料庫和其他一些特殊情況。
孔有一定的用處。在筆者的系統中,一個簡單的測量工具顯示在200MB使用的磁碟空間中,由於孔,節約了大約4MB。在這個系統中,程式相對較少,沒有資料庫檔案
檔案系統的功能包括:管理和調度檔案的存儲空間,提供檔案的邏輯結構、物理結構和存儲方法;實現檔案從標識到實際地址的映射,實現檔案的控制操作和存取操作,實現檔案信息的共享並提供可靠的檔案保密和保護措施,提供檔案的安全措施。
檔案的邏輯結構是依照檔案的內容的邏輯關係組織檔案結構。檔案的邏輯結構可以分為流式檔案和記錄式檔案。
流式檔案:檔案中的數據是一串字元流,沒有結構。
記錄檔案:由若干邏輯記錄組成,每條記錄又由相同的數據項組成,數據項的長度可以是確定的,也可以是不確定的。
主要缺陷:數據關聯差,數據不一致,冗餘性。

代碼

下面是檔案系統的代碼,根據這個代碼我們可以更好地了解檔案系統的工作流程
  1. main.cpp
#include"blockinodesuperblock.h"//-----------------------intmain(){control.open("control.txt",ios::in|ios::out|ios::nocreate);inti;control>>i;control.close();if(i!=0)//不為0就初始化{initial();}control.open("control.txt",ios::in|ios::out|ios::nocreate);control.seekp(0);control<<0;//默認是上次基礎上繼續下去不用再初始化control.close();strcpy(curname,"root");//當前目錄檔案名稱為rootroad[0]=0;//當前目錄路徑(存放從根目錄到這裡的結點號)num=1;//最後位road[num-1]為當前目錄檔案i結點號cout<<"請登入系統\n";while(!login())//登入為止cout<<"wrong!!!\n";cout<<"loginsuccess"<<endl;cout<<"******Welcome"<<auser<<"******";readsuper();getcommand();//命令解析函式writesuper();return0;}
blockinodesuperblock.h
intialloc()//申請一個i結點返回結點號否則返回-1{if(superblock.fiptr>0){inttemp=superblock.fistack[80-superblock.fiptr];//當前可用superblock.fistack[80-superblock.fiptr]=-1;superblock.fiptr--;returntemp;}return-1;}//----------------------voidifree(intindex)//指定一個結點號,回收一個i結點{disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//清空結點disk.seekp(514+64*index+2*(index/8));disk<<setw(64)<<'';disk.close();for(inti=80-superblock.fiptr;i<80;i++)//結點號找到合適位置插入空閒結點號棧{if(superblock.fistack<index)//小於它的前移一位{superblock.fistack[i-1]=superblock.fistack;}else//放在第一個大於它的結點號前面{superblock.fistack[i-1]=index;break;}}superblock.fiptr++;}//----------------------/*成組連結法*/intballoc()//申請一個盤塊返回盤塊號否則返回-1{inttemp=superblock.fbstack[10-superblock.fbptr];if(superblock.fbptr==1)//是棧底了==>;是記錄盤塊了{//是最後記錄盤塊最後號0(保留作棧底分配不成功)if(temp==0){return-1;}suprblock.fbstack[10-superblock.fbptr]=-1;superblock.fbptr=0;//盤塊內容讀入棧for(inti=0;i<10;i++){intid,num=0;disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//先計算盤塊內容個數num(最多10),最後盤塊可能不到10個disk.seekg(514*temp);for(inti=0;i<10;i++){disk>>id;num++;if(id==0)break;}disk.seekg(514*temp);//盤塊內容讀入棧for(intj=10-num;j<10;j++){disk>>id;superblock.fbstack[j]=id;}superblock.fbptr=num;disk.close();}disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//清空回收盤塊disk.seekp(514*temp);disk<<setw(512)<<'';disk.close();//盤塊使用掉returntemp;}else//不是記錄盤塊==>;盤塊使用掉{superblock.fbstack[10-superblock.fbptr]=-1;superblock.fbptr--;returntemp;}}//----------------------

FAT

在Win 9X下,FAT16支持的分區最大為2GB。我們知道計算機將信息保存在硬碟上稱為“簇”的區域內。使用的簇越小,保存信息的效率就越高。在FAT16的情況下,分區越大簇就相應的要大,存儲效率就越低,勢必造成存儲空間的浪費。並且隨著計算機硬體和套用的不斷提高,FAT16檔案系統已不能很好地適應系統的要求。在這種情況下,推出了增強的檔案系統FAT32。同FAT16相比,FAT32主要具有以下特點:
  1. 同FAT16相比FAT32最大的優點是可以支持的磁碟大小達到32GB,但是不能支持小於512MB的分區。
基於FAT32的Win 2000可以支持分區最大為32GB;而基於 FAT16的Win 2000支持的分區最大為4GB。
  1. 由於採用了更小的簇,FAT32檔案系統可以更有效率地保存信息。如兩個分區大小都為2GB,一個分區採用了FAT16檔案系統,另一個分區採用了FAT32檔案系統。採用FAT16的分區的簇大小為32KB,而FAT32分區的簇只有4KB的大小。這樣FAT32就比FAT16的存儲效率要高很多,通常情況下可以提高15%。
  2. FAT32檔案系統可以重新定位根目錄和使用FAT的備份副本。另外FAT32分區的啟動記錄被包含在一個含有關鍵數據的結構中,減少了計算機系統崩潰的可能性。

NTFS

NTFS檔案系統是一個基於安全性的檔案系統,是Windows NT所採用的獨特的檔案系統結構,它是建立在保護檔案和目錄數據基礎上,同時照顧節省存儲資源、減少磁碟占用量的一種先進的檔案系統。使用非常廣泛的Windows NT 4.0採用的就是NTFS 4.0檔案系統,相信它所帶來的強大的系統安全性一定給廣大用戶留下了深刻的印象。Win 2000採用了更新版本的NTFS檔案系統NTFS 5.0,它的推出使得用戶不但可以像Win 9X那樣方便快捷地操作和管理計算機,同時也可享受到NTFS所帶來的系統安全性。
NTFS 5.0的特點主要體現在以下幾個方面:
  1. NTFS可以支持的MBR分區(如果採用動態磁碟則稱為卷)最大可以達到2TB,GPT分區則無限制。而Win 2000中的FAT32支持單個檔案的大小最大為2GB。
  2. NTFS是一個可恢復的檔案系統。在NTFS分區上用戶很少需要運行磁碟修復程式。NTFS通過使用標準的事物處理日誌和恢復技術來保證分區的一致性。發生系統失敗事件時,NTFS使用日誌檔案和檢查點信息自動恢復檔案系統的一致性。
  3. NTFS支持對分區、資料夾和檔案的壓縮。任何基於Windows的應用程式對NTFS分區上的壓縮檔案進行讀寫時不需要事先由其他程式進行解壓縮,當對檔案進行讀取時,檔案將自動進行解壓縮;檔案關閉或保存時會自動對檔案進行壓縮。
  4. NTFS採用了更小的簇,可以更有效率地管理磁碟空間。在Win 2000的FAT32檔案系統的情況下,分區大小在2GB~8GB時簇的大小為4KB;分區大小在8GB~16GB時簇的大小為8KB;分區大小在16GB~32GB時,簇的大小則達到了16KB。而Win 2000的NTFS檔案系統,當分區的大小在2GB以下時,簇的大小都比相應的FAT32簇小;當分區的大小在2GB以上時(2GB~2TB),簇的大小都為4KB。相比之下,NTFS可以比FAT32更有效地管理磁碟空間,最大限度地避免了磁碟空間的浪費。
  5. 在NTFS分區上,可以為共享資源、資料夾以及檔案設定訪問許可許可權。許可的設定包括兩方面的內容:一是允許哪些組或用戶對資料夾、檔案和共享資源進行訪問;二是獲得訪問許可的組或用戶可以進行什麼級別的訪問。訪問許可許可權的設定不但適用於本地計算機的用戶,同樣也套用於通過網路的已分享檔案夾對檔案進行訪問的網路用戶。與FAT32檔案系統下對資料夾或檔案進行訪問相比,安全性要高得多。另外,在採用NTFS格式的Win 2000中,套用審核策略可以對資料夾、檔案以及活動目錄對象進行審核,審核結果記錄在安全日誌中,通過安全日誌就可以查看哪些組或用戶對資料夾、檔案或活動目錄對象進行了什麼級別的操作,從而發現系統可能面臨的非法訪問,通過採取相應的措施,將這種安全隱患減到最低。這些在FAT32檔案系統下,是不能實現的。
  6. 在Win 2000的NTFS檔案系統下可以進行磁碟配額管理。磁碟配額就是管理員可以為用戶所能使用的磁碟空間進行配額限制,每一用戶只能使用最大配額範圍內的磁碟空間。設定磁碟配額後,可以對每一個用戶的磁碟使用情況進行跟蹤和控制,通過監測可以標識出超過配額報警閾值和配額限制的用戶,從而採取相應的措施。磁碟配額管理功能的提供,使得管理員可以方便合理地為用戶分配存儲資源,避免由於磁碟空間使用的失控可能造成的系統崩潰,提高了系統的安全性。
  7. NTFS使用一個“變更”日誌來跟蹤記錄檔案所發生的變更。

CDFS

CDFS是大部分的光碟的檔案系統,只有小部分光碟使用其他檔案系統。這些檔案系統只能在CD-R或CD-RW上讀取。

exFAT

(全稱Extended File Allocation Table File System,擴展FAT,即擴展檔案分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一種適合於快閃記憶體的檔案系統,為了解決FAT32等不支持4G及其更大的檔案而推出。對於快閃記憶體,NTFS檔案系統不適合使用,exFAT更為適用。相對FAT檔案系統,exFAT有如下好處:
擴展檔案分配表主界面擴展檔案分配表主界面
1·增強了桌上型電腦與移動設備的互操作能力
2·單檔案大小最大可達16EB(就是理論值,16×1024×1024TB,1TB=1024G)
3·簇大小可高達32MB
4·採用了剩餘空間分配表,剩餘空間分配性能改進
5·同一目錄下最大檔案數可達65 536個
6·支持訪問控制
7·支持TFAT
採用該檔案系統的快閃記憶體盤不支持Windows Vista ReadyBoost。Windows Vista SP1支持該檔案系統。
請注意:exFAT只是一個折中的方案,只為隨身碟而生。
超過4GB的隨身碟格式化時默認是NTFS分區,但是這種格式是很傷隨身碟的,因為NTFS分區是採用“日誌式”的檔案系統,需要記錄詳細的讀寫操作,肯定會比較傷閃盤晶片,因為要不斷讀寫。
下面請看exFAT、NTFS、FAT分區的比較:
檔案系統
作業系統
最小扇區
最大扇區
最大單一檔案
最大格式化容量
檔案數量
FAT32
Win 95 OSR2之後
512bytes
64KB
2bytes-4GB
2TB(但NT核心系統限制為32GB)
4194304
NTFS
Win2000之後
512bytes
64KB
受最大分割容量
2TB~256TB(受MBR影響)
exFAT
Win CE 6/Vista SP1/Win 8
512bytes
32768KB
16EB(理論值)
16EB(理論值)(目前支持到256TB)
至少可以大於1000

RAW

RAW檔案系統是一種磁碟未經處理或者未經格式化產生的檔案系統,一般來說有這幾種可能造成正常檔案系統變成RAW檔案系統:
●沒有格式化。
●格式化中途取消操作。
●硬碟出現壞道
●硬碟出現不可預知的錯誤。
●病毒所致。
解決RAW檔案系統的最快的方法是立即格式化,並且使用防毒軟體全盤防毒。當然,如果檔案很重要的話可以考慮用磁碟數據恢復軟體先救出數據,然後再格式化和防毒,或者在網上查找一些有關於“raw檔案系統恢復”的內容。

Ext

Ext2

Ext是 GNU/Linux 系統中標準的檔案系統,其特點為存取檔案的性能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。
其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的 x86電腦系統中,簇最大為 4KB,則單一檔案大小上限為 2048GB,而檔案系統的容量上限為 16384GB。
但由於目前核心 2.4 所能使用的單一分割區最大只有 2048GB,實際上能使用的檔案系統容量最多也只有 2048GB。
至於Ext3檔案系統,它屬於一種日誌檔案系統,是對ext2系統的擴展。它兼容ext2,並且從ext2轉換成ext3並不複雜。

Ext3

Ext3是一種日誌式檔案系統,是對ext2系統的擴展,它兼容ext2。日誌式檔案系統的優越性在於:由於檔案系統都有快取層參與運作,如不使用時必須將檔案系統卸下,以便將快取層的資料寫回磁碟中。因此每當系統要關機時,必須將其所有的檔案系統全部shutdown後才能進行關機。
如果在檔案系統尚未shutdown前就關機 (如停電) 時,下次重開機後會造成檔案系統的資料不一致,故這時必須做檔案系統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容量大的檔案系統,而且也不能百分之百保證所有的資料都不會流失。
為了克服此問題,使用所謂‘日誌式檔案系統(Journal File System) ’。此類檔案系統最大的特色是,它會將整個磁碟的寫入動作完整記錄在磁碟的某個區域上,以便有需要時可以回溯追蹤。
由於資料的寫入動作包含許多的細節,像是改變檔案標頭資料、搜尋磁碟可寫入空間、一個個寫入資料區段等等,每一個細節進行到一半若被中斷,就會造成檔案系統的不一致,因而需要重整。
然而,在日誌式檔案系統中,由於詳細紀錄了每個細節,故當在某個過程中被中斷時,系統可以根據這些記錄直接回溯並重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度相當快,幾乎不需要花時間。

Ext4

Linux kernel 自 2.6.28 開始正式支持新的檔案系統 Ext4。Ext4 是 Ext3 的改進版,修改了 Ext3 中部分重要的數據結構,而不僅僅像 Ext3 對 Ext2 那樣,只是增加了一個日誌功能而已。Ext4 可以提供更佳的性能和可靠性,還有更為豐富的功能:
  1. 與 Ext3 兼容。執行若干條命令,就能從 Ext3 線上遷移到Ext4,而無須重新格式化磁碟或重新安裝系統。原有 Ext3數據結構照樣保留,Ext4作用於新數據,當然,整個檔案系統因此也就獲得了 Ext4 所支持的更大容量。
  2. 更大的檔案系統和更大的檔案。較之 Ext3 目前所支持的最大 16TB 檔案系統和最大 2TB 檔案,Ext4分別支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的檔案系統,以及 16TB 的檔案。
  3. 無限數量的子目錄。Ext3 目前只支持 32,000 個子目錄,而Ext4支持無限數量的子目錄。
  4. Extents。Ext3 採用間接塊映射,當操作大檔案時,效率極其低下。比如一個 100MB 大小的檔案,在 Ext3 中要建立 25,600 個數據塊(每個數據塊大小為 4KB)的映射表。而Ext4引入了現代檔案系統中流行的 extents 概念,每個 extent 為一組連續的數據塊,上述檔案則表示為“該檔案數據保存在接下來的 25,600 個數據塊中”,提高了不少效率。
  5. 多塊分配。當寫入數據到 Ext3 檔案系統中時,Ext3 的數據塊分配器每次只能分配一個 4KB 的塊,寫一個 100MB 檔案就要調用 25,600 次數據塊分配器,而Ext4的多塊分配器“multiblock allocator”(mballoc) 支持一次調用分配多個數據塊。
  6. 延遲分配。Ext3 的數據塊分配策略是儘快分配,而Ext4和其它現代檔案作業系統的策略是儘可能地延遲分配,直到檔案在 cache 中寫完才開始分配數據塊並寫入磁碟,這樣就能最佳化整個檔案的數據塊分配,與前兩種特性搭配起來可以顯著提升性能。
  7. 快速 fsck。以前執行 fsck 第一步就會很慢,因為它要檢查所有的 inode,現在Ext4給每個組的 inode 表中都添加了一份未使用 inode 的列表,今後 fsck Ext4 檔案系統就可以跳過它們而只去檢查那些在用的 inode 了。
  8. 日誌校驗。日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢複數據會導致更多的數據損壞。Ext4的日誌校驗功能可以很方便地判斷日誌數據是否損壞,而且它將 Ext3 的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了性能。
  9. “無日誌”(No Journaling)模式。日誌總歸有一些開銷,Ext4允許關閉日誌,以便某些有特殊需求的用戶可以藉此提升性能。
  10. 線上碎片整理。儘管延遲分配、多塊分配和 extents 能有效減少檔案系統碎片,但碎片還是不可避免會產生。Ext4支持線上碎片整理,並將提供 e4defrag 工具進行個別檔案或整個檔案系統的碎片整理。
  11. inode 相關特性。Ext4支持更大的 inode,較之 Ext3 默認的 inode 大小 128 位元組,Ext4 為了在 inode 中容納更多的擴展屬性(如納秒時間戳或 inode 版本),默認 inode 大小為 256 位元組。Ext4還支持快速擴展屬性(fast extended attributes)和 inode 保留(inodes reservation)。
  12. 持久預分配(Persistent preallocation)。P2P 軟體為了保證下載檔案有足夠的空間存放,常常會預先創建一個與所下載檔案大小相同的空檔案,以免未來的數小時或數天之內磁碟空間不足導致下載失敗。Ext4在檔案系統層面實現了持久預分配並提供相應的 API(libc 中的 posix_fallocate()),比套用軟體自己實現更有效率。
  13. 默認啟用 barrier。磁碟上配有內部快取,以便重新調整批量數據的寫操作順序,最佳化寫入性能,因此檔案系統必須在日誌數據寫入磁碟之後才能寫 commit 記錄,若 commit 記錄寫入在先,而日誌有可能損壞,那么就會影響數據完整性Ext4默認啟用 barrier,只有當 barrier 之前的數據全部寫入磁碟,才能寫 barrier 之後的數據。(可通過 "mount -o barrier=0" 命令禁用該特性。)

Btrfs

Btrfs(通常念成Butter FS),是由Oracle於2007年宣布並進行中的copy-on-write檔案系統。目標是取代Linux目前的ext3檔案系統,改善ext3的限制,特別是單個檔案的大小,總檔案系統大小或檔案檢查和加入目前ext3未支持的功能,像是 writable snapshots、snapshots of snapshots、內建磁碟陣列(RAID)支持,以及 subvolumes。Btrfs 也宣稱專注在“容錯、修復及易於管理”。

ZFS

ZFS源自於Sun MicrosystemsSolaris作業系統開發的檔案系統。ZFS是一個具有高存儲容量、檔案系統與卷管理概念整合、嶄新的磁碟邏輯結構的輕量級檔案系統,同時也是一個便捷的存儲池管理系統。ZFS是一個使用CDDL協定條款授權的開源項目。

HFS

HFS檔案系統概念

分層檔案系統(Hierarchical File System,HFS)是一種由蘋果電腦開發,並使用在Mac OS上的檔案系統。最初被設計用於軟碟和硬碟,同時也可以在在唯讀媒體如CD-ROM上見到。

HFS檔案系統開發過程

HFS首次出現在1985年9月17日,作為Macintosh電腦上新的檔案系統。它取代只用於早期Mac型號所使用的平面檔案系統Macintosh File System(MFS)。因為Macintosh電腦所產生的數據,比其它通常的檔案系統,如DOS使用的FAT或原始Unix檔案系統所允許存儲的數據更多。蘋果電腦開發了一種新式更適用的檔案系統,而不是採用現有的規格。例如,HFS允許檔案名稱最多有31個字元的長度,支持metadata和雙分支(每個檔案的數據和資源支分開存儲)檔案。
儘管HFS象其它大多數檔案系統一樣被視為專有的格式,因為只有它為大多數最新的作業系統提供了很好的通用解決方法以存取HFS格式磁碟。

構成方式

分層檔案系統把一個卷分為許多512位元組的“邏輯塊”。這些邏輯塊被編組為“分配塊”,這些分配塊可以根據卷的尺寸包含一個或多個邏輯塊。HFS對地址分配塊使用16位數值,分配塊的最高限制數量是65536。
組成一個HFS卷需要下面的五個結構:
  1. 卷的邏輯塊0和1是啟動塊,它包含了系統啟動信息。例如,啟動時載入的系統名稱和殼(通常是Finder)檔案。
  2. 邏輯塊2包含主目錄塊(Master Directory Block,簡稱MDB)。
  3. 邏輯塊3是卷點陣圖(Volume Bitmap)的啟動塊,它追蹤分配塊使用狀態。
  4. 總目錄檔案(Catalog File)是一個包含所有檔案的記錄和儲存在卷中目錄的B*-tree。
  5. 擴展溢出檔案(Extent Overflow File)是當最初總目錄檔案中三個擴展占用後,另外一個包含額外擴展記錄的分配塊對應信息的B*-tree。

HFS+

在1998年,蘋果電腦發布了HFS+,其改善了HFS對磁碟空間的地址定位效率低下,並加入了其它的改進。
HFS+檔案系統相對於HFS檔案系統的特點1、採用32bit 記錄分配塊數量
HFS 和HFS+檔案系統對磁碟卷採用分塊進行分配,將一個卷分成等大的分配塊。HFS檔案系統採用16bit 來記錄分配塊的數量,最多只能描述216個分配塊。而對於HFS+檔案系統,採用32bit 來記錄分配塊的數量,最多能描述232 個分配塊。對於Mac 系統上的非空數據,都必須占用整數個分配塊,也就是說,即使一個數據只有一個位元組,也要占用一個分配塊。而HFS+檔案系統增大了每個卷分配塊的數量,可以使分配塊的單位空間更小,從而達到減少存儲空間浪費的目的。
2、目錄樹節點大小增加到4KB
HFS 檔案系統的目錄樹節點大小為512 位元組,由於HFS+檔案系統目錄樹索引節點需要存儲附加指針和節點描述符兩個關鍵值,HFS+檔案系統的目錄樹節點大小增加到4KB。
3、單一檔案大小得到提升
HFS 檔案系統的單一檔案大小上限為2^31bit,而HFS+檔案系統的單一檔案大小最大可達到2^63bit。
4、支持長檔案名稱
HFS 檔案系統對檔案名稱最長支持到31個字元,而HFS+檔案系統對檔案名稱採用Unicode編碼,最長達到255個字元。

ReiserFS

ReiserFS,是一種檔案系統格式,作者是Hans Reiser及其團隊Namesys,1997年7月23日他將ReiserFS檔案系統在網際網路上公布。Linux核心從2.4.1版本開始支持ReiserFS。
ReiserFS 的命名是源自作者Hans Reiser的姓氏,這個日誌型檔案系統發展比ext2/3 晚近許多。在技術上使用的是 B*-tree 為基礎的檔案系統,其特色為能很有效率地處理大型檔案到眾多小檔案都可以用很高的效率處理;實務上 ReiserFS 在處理檔案小於 1k 小檔案時,甚至效率可以比ext3快約10倍。
ReiserFS原先是Novell公司的SuSE Linux Enterprise採用的預設檔案系統,直到2006年10月12日其宣稱將在未來的版本改採ext3為預設。Novell公司否認這與Hans Reiser被控殺妻案有任何關係。

JFS

JFS( JOURNAL FILE SYSTEM),一種位元組級日誌檔案系統,借鑑了資料庫保護系統的技術,以日誌的形式記錄檔案的變化。JFS通過記錄檔案結構而不是數據本身的變化來保證數據的完整性。這種方式可以確保在任何時刻都能維護數據的可訪問性。
該檔案系統主要是為滿足伺服器(從單處理器系統到高級多處理器和群集系統)的高吞吐量和可靠性需求而設計、開發的。JFS檔案系統是為面向事務的高性能系統而開發的。在IBM的AIX系統上,JFS已經過較長時間的測試,結果表明它是可靠、快速和容易使用的。2000年2月,IBM宣布在一個開放資源許可證下移植Linux版本的JFS檔案系統。JFS也是一個有大量用戶安裝使用的企業級檔案系統,具有可伸縮性和健壯性。與非日誌檔案系統相比,它的突出優點是快速重啟能力,JFS能夠在幾秒或幾分鐘內就把檔案系統恢復到一致狀態。雖然JFS主要是為滿足伺服器(從單處理器系統到高級多處理器和群集系統)的高吞吐量和可靠性需求而設計的,但還可以用於想得到高性能和可靠性的客戶機配置,因為在系統崩潰時JFS能提供快速檔案系統重啟時間,所以它是網際網路檔案伺服器的關鍵技術。使用資料庫日誌處理技術,JFS能在幾秒或幾分鐘之內把檔案系統恢復到一致狀態。而在非日誌檔案系統中,檔案恢復可能花費幾小時或幾天。
JFS的缺點是,使用JFS日誌檔案系統性能上會有一定損失,系統資源占用的比率也偏高,因為當它保存一個日誌時,系統需要寫許多數據。

VMFS

VMware Virtual Machine File System (VMFS )是一種高性能的群集檔案系統,它使虛擬化技術的套用超出了單個系統的限制。VMFS的設計、構建和最佳化針對虛擬伺服器環境,可讓多個虛擬機共同訪問一個整合的群集式存儲池,從而顯著提高了資源利用率。VMFS 是跨越多個伺服器實現虛擬化的基礎,它可啟用VMware VmotionTM 、Distributed Resource Scheduler 和 VMware High Availability 等各種服務。VMFS 還能顯著減少管理開銷,它提供了一種高效的虛擬化管理層,特別適合大型企業數據中心。採用 VMFS 可實現資源共享,使管理員輕鬆地從更高效率和存儲利用率中直接獲益。

XFS

XFS 是 Silicon Graphics,Inc. 於 90 年代初開發的檔案系統。它至今仍作為 SGI 基於 IRIX 的產品(從工作站超級計算機)的底層檔案系統來使用。現在,XFS 也可以用於 Linux。XFS 的 Linux 版的到來是激動人心的,首先因為它為 Linux 社區提供了一種健壯的、優秀的以及功能豐富的檔案系統,並且這種檔案系統所具有的可伸縮性能夠滿足最苛刻的存儲需求。

UFS

UFS檔案系統:基於BSD高速檔案系統的傳統UNIX檔案系統,是Solaris的默認檔案系統。默認啟用UFS 日誌記錄功能。在早期的Solaris 版本中,UFS 日誌記錄功能只能手動啟用。Solaris 10在運行64位Solaris核心的系統上支持多TB UFS檔案系統。以前,UFS檔案系統在64位系統和32位系統上的大小僅限於約1 TB(Tbyte)。現在,所有UFS檔案系統命令和公用程式已更新為支持多TB UFS檔案系統。
UFS1檔案系統是OpenBSD和Solaris的默認檔案系統。UFS1也曾是NetBSD和FreeBSD的默認檔案系統,但NetBSD2.0和FreeBSD5.0以後版本開始使用UFS2做默認的檔案系統。UFS2增加了對大檔案和大容量磁碟的支持和一些先進的特性。目前似乎還只有FreeBSD和NetBSD支持UFS2。Apple OS X和Linux也支持UFS1,但並不做為它們的默認檔案系統。

VXFS

VeritasFileSystem(VxFS)是首個商業日誌記錄檔案系統。通過日誌記錄功能,元數據更改首先寫入到日誌,然後再寫入到磁碟。由於無需在多處寫入更改,且元數據是異步寫入的,因此吞吐量的速度較快。VxFS也是基於擴展區的意向日誌記錄檔案系統。VxFS設計用於要求高性能和高可用性,並且可以處理大量數據的操作環境。

ReFS

ReFS(Resilient File System,彈性檔案系統) 是在Windows 8.1和Server® 2012中新引入的一個檔案系統。ReFS是與NTFS大部分兼容的,其主要目的 是為了保持較高的穩定性,可以自動驗證數據是否損壞,並盡力恢複數據。
ReFS 的關鍵功能如下:
·帶有校驗和的元數據完整性
·提供可選用戶數據完整性的完整性流。
·通過寫入時分配事務模型實現可靠的磁碟更新(也稱為寫入時複製)
·支持超大規模的卷、檔案和目錄
·存儲池和虛擬化使得檔案系統可建立並易於管理
·通過數據條帶化提高性能(頻寬可管理)並通過備份提高容錯性
·通過磁碟掃描防止潛在的磁碟錯誤
·藉助“數據打撈”實現損壞還原,以便在任何情況下儘可能提高卷的可用性
·跨計算機共享存儲池,以提供額外的容錯性和負載平衡

WBFS

WBFS檔案系統全稱為Wii Backup File System,是在進行任天堂家用機wii運行備份遊戲的研究中產生的遊戲備份模式。由黑客發明,在windows系統下不能識別,早期利用linux系統運作。主要為了改善USB存儲設備的運行效率。

PFS

PFS全稱Playstation File System,顧名思義就是索尼為其家用機PS2專用硬碟開發的檔案系統,電腦上只有PFS Explorer和Winhiip可以讀取,其餘資料不明。

相關詞條

熱門詞條

聯絡我們