複製鏈接
請複製以下鏈接發送給好友

文件系統

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

目錄

  1. 1 簡介
  2. 2 功能
  3. 3 代碼
  4. 4 FAT
  5. 5 NTFS
  6. 6 CDFS
  7. 7 exFAT
  1. 8 RAW
  2. 9 Ext
  3. Ext2
  4. Ext3
  5. Ext4
  6. 10 Btrfs
  7. 11 ZFS
  8. 12 HFS
  1. HFS文件系統概念
  2. HFS文件系統開發過程
  3. 構成方式
  4. 13 HFS+
  5. 14 ReiserFS
  6. 15 JFS
  7. 16 VMFS
  1. 17 XFS
  2. 18 UFS
  3. 19 VXFS
  4. 20 ReFS
  5. 21 WBFS
  6. 22 PFS

文件系統簡介

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

文件系統功能

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

文件系統代碼

下面是文件系統的代碼,根據這個代碼我們可以更好地瞭解文件系統的工作流程
  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");//當前目錄文件名為root
road[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分區的啓動記錄被包含在一個含有關鍵數據的結構中,減少了計算機 [4]  系統崩潰的可能性。

文件系統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-RCD-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只是一個折中的方案,只為U盤而生。
超過4GB的U盤格式化時默認是NTFS分區,但是這種格式是很傷U盤的,因為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 [5]  AIX系統上,JFS已經過較長時間的測試,結果表明它是可靠、快速和容易使用的。2000年2月,IBM宣佈在一個開放資源許可證下移植Linux版本的JFS文件系統。JFS也是一個有大量用户安裝使用的企業級文件系統,具有可伸縮性健壯性。與非日誌文件系統相比,它的突出優點是快速重啓能力,JFS能夠在幾秒或幾分鐘內就把文件系統恢復到一致狀態。雖然JFS主要是為滿足服務器(從單處理器系統到高級多處理器和羣集系統)的高吞吐量和可靠性需求而設計的,但還可以用於想得到高性能和可靠性的客户機配置,因為在系統崩潰時JFS能提供快速文件系統重啓時間,所以它是因特網文件服務器關鍵技術。使用數據庫日誌處理技術,JFS能在幾秒或幾分鐘之內把文件系統恢復到一致狀態。而在非日誌文件系統中,文件恢復可能花費幾小時或幾天。
JFS的缺點是,使用JFS日誌文件系統性能上會有一定損失,系統資源佔用的比率也偏高,因為當它保存一個日誌時,系統需要寫許多數據。

文件系統VMFS

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

文件系統XFS

XFS 是 Silicon Graphics,Inc. 於 90 年代初開發的文件系統。它至今仍作為 SGI 基於 IRIX 的產品(從工作站到 [9]  超級計算機)的底層文件系統來使用。現在,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 XLinux也支持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可以讀取,其餘資料不明。
參考資料