一、NTFS文件系統(tǒng)的B+樹結(jié)構(gòu)與一般的B+樹結(jié)構(gòu)的區(qū)別
NTFS文件系統(tǒng)的B+樹結(jié)構(gòu)與一般的B+樹結(jié)構(gòu)的區(qū)別是NTFS文件系統(tǒng)的B+樹結(jié)構(gòu)是配合磁盤特性的,本來查詢樹使用多分支在內(nèi)存里是沒有意義的,只會導(dǎo)致讀取了更多數(shù)據(jù)。但磁盤(或者說機械硬盤)的特性在于,多次隨機讀取效率遠低于連續(xù)讀取一大段數(shù)據(jù),因為每一次都需要經(jīng)過尋道。這樣B樹就被設(shè)計為用較少的次數(shù)讀取磁盤,每次讀取較大的塊,從而優(yōu)化整體查詢。
B+樹在NTFS文件系統(tǒng)中的應(yīng)用
卷(volume)
NTFS的結(jié)構(gòu)首先從卷開始。
卷相應(yīng)于磁盤上的一個邏輯分區(qū),當(dāng)你將一個磁盤或者磁盤的一部分格式化成NTFS,卷將被創(chuàng)建起來。
一個磁盤能夠有一個卷或好幾個卷.NTFS獨立的處理每個卷。
卷相應(yīng)的就是C盤,D盤,E盤等。
簇(cluster)
在一個NTFS卷中,簇的大小,或者說簇因子(cluster factor),是在磁盤管理程序MMC載入件格式化該卷的時候建立起來的。默認的簇因子隨著卷大小的不同而不同,但它是物理扇區(qū)的整數(shù)倍。并且總是2的冪。(1個扇區(qū),2個扇區(qū),4個扇區(qū),8個扇區(qū))以此類推。
簇因子被表示成一個簇中的字節(jié)數(shù),比方512字節(jié) 1KB或者2KB。
硬盤的讀寫以扇區(qū)為基本單位。NTFS的讀寫以簇為基本單位。
NTFS在內(nèi)部僅僅引用到簇一級,NTFS使用簇作為它的分配單位,從而保持它與物理扇區(qū)大小之間的獨立性。
邏輯簇號(Logical Cluster Number。LCN)
LCN是從一個卷的開始直到結(jié)束的全部簇的一個編號。
NTFS依賴于邏輯號(LCN)來引用物理位置。
獲取物理磁盤地址方法
LCN乘以簇因子。從而得到卷上的物理字節(jié)偏移量。
虛擬簇號(Virtual Cluster Number。VCN)
VCN對同屬一個文件的全部簇進行編號,從0到m。NTFS依賴于虛擬簇號(VCN)來引用一個文件內(nèi)部的數(shù)據(jù)。
VCN不必是物理上連續(xù)的。它們能夠被映射到該卷上的不論什么LCN編號。
主文件表(Master File Table)
MFT是NTFS卷結(jié)構(gòu)的核心所在。
涉及到B+樹。
延伸閱讀:
二、什么是B樹
B樹是一種數(shù)據(jù)結(jié)構(gòu),用于在硬盤或其他非易失性存儲介質(zhì)上快速存儲和訪問大量數(shù)據(jù)。它是一種平衡樹,其每個節(jié)點可以存儲多個鍵值對,而不僅僅是一個。B樹通常用于需要頻繁讀寫的數(shù)據(jù)庫或文件系統(tǒng)中,因為它可以減少磁盤的訪問次數(shù),從而提高了性能。
B樹有以下幾個特點:
每個節(jié)點可以存儲多個鍵值對。這個數(shù)量通常稱為節(jié)點的度數(shù)(degree)。
所有葉節(jié)點都在同一層級上。這有助于保持樹的平衡,使得在任何一個節(jié)點到達葉子節(jié)點的路徑長度都相同。
節(jié)點中的鍵值對是按照某種順序排列的。這使得查找操作更加高效。
B樹的高度相對于存儲的關(guān)鍵字數(shù)來說非常小。因此,可以較快地定位到任何一個關(guān)鍵字。