分配檔案

分配檔案

分配檔案是一個非常大,而且無法訪問的檔案,負責跟蹤宗卷中所有塊的分配情況。

基本介紹

  • 中文名:分配檔案
  • 外文名:allocate file
  • 定義:跟蹤宗卷中所有塊的分配情況
  • 類型:點陣圖形式
  • 系統:計算機
  • 套用學科:計算機原理
概述,HFS優勢,分配檔案大小,

概述

分配檔案是一個非常大,而且無法訪問的檔案,負責跟蹤宗卷中所有塊的分配情況。
分配檔案設計為一個簡單的點陣圖形式,其中每一個位表示一個數據塊,如果對應的數據塊被使用了(或者可能為一個壞塊),那么這個位會被置位。分配檔案的大小直接取決於宗卷大小和塊大小,可以通過(宗卷大小/塊大小)/8直接計算得到,其中宗卷包含了(宗卷大小/塊大小)個數據塊,而每一個數據塊都對應一個位。
由於分配檔案本身也是一個檔案,因此可能會碎片化。如果宗卷被擴大了,那么分配檔案也會增長,因此實現了非常可擴展的方案。分配檔案通常是連續的,而且包含在單獨一個extent中,因為分配檔案是在創建檔案系統時通過mkfs程式創建的。此外,檔案系統中分配塊大小的動態變化也比較容易實現。
最新版本的HFS(在Lion中)引入了一個基於紅黑樹的分配器(#ifdef CONFIG_HFS_ALLOC_RBTREE)。這個分配器有一點類似於XFS分配數據塊的方法,當磁碟碎片化越來越嚴重時,提供更高效的基於紅黑樹的分配機制可以快速找到連續的數據塊。有一個核心執行緒運行hfs_initialize_allocator()函式從宗卷的點陣圖創建兩個紅黑樹(一個用於元數據區域,另一個用於宗卷中剩下的其他部分)。注意,這些樹創建在記憶體中,沒有對應的磁碟存儲形式,因此不需要對檔案系統的磁碟結構進行修改。

HFS優勢

與HFS使用一個稱為“卷點陣圖”的特殊區域存儲分配塊的信息不同,HFS+使用一個“分配檔案”來表明卷中每個分配塊是否已經分配給檔案使用。分配檔案是一個點陣圖檔案,這個點陣圖檔案中的每個bit對應該卷中的一個分配塊,如果某個位進行了設定,則說明它所對應的分配塊已經被檔案系統中的檔案所使用;如果某個位為空,說明還沒有被使用。
HFS+卷使用分配檔案有以下幾點優勢:
1.使用檔案允許分配檔案為其自身分配存儲塊,這種方式相對簡單得多,因為這樣卷就只有一種塊類型——分配塊。HFS之所以複雜是因為它使用扇區來存儲分配點陣圖,用分配塊來存儲檔案。
2.分配檔案可以是不連續的,允許分配信息和用戶數據交叉存取。許多現代的檔案系統都採取這種方式以減少檔案增大的過程中的磁頭運動行程。
3.分配檔案可以擴展。因為分配檔案的可擴展性,所以很容易增加磁碟上的分配塊的數量。這無論是對於想減小分配塊的大小還是擴大整個磁碟的空間都是非常有用的。
4.分配檔案的可收縮性。可以為不同大小的卷創建適當的鏡像,回寫至磁碟時,即便磁碟很大,也可以建立足夠的分配檔案數據;如果寫入較小的磁碟,分配檔案又可以收縮至適當的大小。
5.分配檔案中的每個位元組可以描述8個分配塊的狀態。檔案中偏移X處的位元組包
含分配塊(x*8)至(x*8+7)這8個分配塊的狀態。在每個位元組內部,最高位用來描述這個位元組所描述的分配塊中塊號最低的分配塊,最低位用來描述分配塊號最高的分配塊。

分配檔案大小

(1)分配檔案的大小依賴於卷中分配塊的數量。也就是磁碟上扇區的數量和卷的分配塊的大小(每分配塊的扇區數)。例如:一個大小為1GB的磁碟上的卷,如果分配塊大小為4KB,則需要大小為256Kb(32KB,即8個分配塊)的分配檔案。因此分配塊檔案本身也需要占用分配塊,它總是占用整數個分配塊。
(2)對於一個給定大小的卷,分配檔案的大小可以大於這個卷所需要的最小分配檔案位元組數。點陣圖中所有未使用的位必須全部設定為0。
(3)因為用32bit來描述分配檔案的大小,它的上限可以達到512MB,這從根本上突破了HFS卷中8KB的限制。
(4)另外,因為整個卷都由分配塊來記錄是否已被分配使用,卷頭、備份卷頭以及保留扇區(開始的兩個扇區和最後的一個扇區】必須被標記為“已分配”。
實際標記的已分配塊數因分配塊大小的不同而有所變化。例如:
1.如果分配塊大小為512位元組,則開始的三個分配塊和最後的兩個分配塊被標記為已分配。
2.如果分配塊大小為1024位元組,則開始的兩個分配塊和最後的一個分配塊被標記為已分配。
3.如果分配塊的大小更大些,則只有開始的一個分配塊和最後的一個分配塊被標記為已分配。

相關詞條

熱門詞條

聯絡我們