2009-05-23 91 views
0

Jonathan Leffler在"How can I find the Size of some specified files?"這個問題上的評論引人深思。我會將其分解成多個部分進行分析。Linux文件系統的歷史觀點

  1. - 文件存儲在頁;

  2. 您通常結束了更多的空間比該計算中使用 給出 因爲一個1個字節文件(通常)佔據 一頁(也許的512字節)。

  3. 的 精確值會發生變化 - 它在 是比較容易的第七版Unix文件系統 的日子(雖然不是小事,甚至然後

4-5,如果你想考慮 間接的。由 inode引用的塊以及原始數據塊)。

問題關於部分

  1. 什麼是 「頁」 的定義是什麼?
  2. 爲什麼後面想到的「一頁(可能是512字節)」中的「可能」這個詞?
  3. 爲什麼在「第7版Unix文件系統」中更容易測量確切大小?
  4. 「間接塊」的定義是什麼?
  5. 如何通過兩件事來引用:「inode」和「原始數據塊」?

歷史問題涌現

一,什麼是歷史背景萊弗勒被談論?

二,定義中有 定義有變化嗎?

回答

2

像往常一樣爲維基百科頁面,Block (data storage)是信息性的,儘管連接所有關鍵字過於繁重。

computing(具體數據傳輸和data storage),一個塊是bytesbits或序列,具有標稱長度(塊大小)。據說這樣構造的數據被阻止。將數據放入塊的過程稱爲阻塞。阻塞用於幫助接收數據的計算機程序處理數據流。被阻止的數據一次只能讀取整個數據塊。在將數據存儲到9軌magnetic tape,旋轉媒體如floppy diskshard disksoptical discs和NAND flash memory時,阻塞幾乎普遍採用。

大多數file systems是基於block device,這是爲abstraction負責存儲和檢索數據的指定塊的hardware的水平,儘管在文件系統塊大小可以是物理塊大小的倍數。在傳統的文件系統中,單個塊可能只包含單個的一部分file。由於文件長度通常不是塊大小的倍數,因此由於internal fragmentation導致空間效率低下,因此文件的最後一塊將保持部分空白。這將創建slack space,其平均每個文件一半的塊。一些較新的文件系統試圖通過稱爲block suballocationtail merging的技術來解決這個問題。

還有一個經典的Unix File System合理的概述。

傳統上,硬盤的幾何形狀(磁盤本身的塊佈局)一直是CHS

  • :盤片上每個(一個側)的磁讀/寫器;可以移入和移出訪問不同氣缸
  • 氣缸:一個頭的下方通過作爲盤旋轉
  • 扇區軌道:上的部分氣缸連續地存儲數據的恆定大小的量;該驅動器可以處理

CHS數據的最小單位是不常使用這些天,如

  • 硬盤不再使用每汽缸扇區的常數。通過使用每個扇區的恆定弧長而不是恆定的旋轉角度來將更多的數據擠壓在盤片上,因此外部氣缸上的扇區比內部氣缸上的更多。
  • 通過ATA說明書中,驅動器可以具有每頭不超過2 16個缸,2 頭,並且每個氣缸2個部門;與512B扇區,這是一個128GB的限制。通過BIOS INT13,通過CHS無法訪問超過7.88GB的任何內容。
  • 爲了向後兼容,較大的驅動器仍然聲稱具有CHS幾何(否則DOS將無法啓動),但獲取任何較高的數據需要使用LBA尋址。
  • CHS甚至在RAID或非旋轉媒體上都沒有意義。

但由於歷史原因,這已影響塊大小:因爲扇區大小几乎總是512B,文件系統塊大小一直是512B的倍數。 (有一個movement在進行中,內置1kB和4KB大小的扇區介紹驅動器,但兼容性看起來相當痛苦。)

一般來說,存儲許多小文件時(較小的文件系統的塊大小導致更少的空間浪費,除非像尾巴先進技術正在使用合併),而更大的塊大小減少了外部碎片,並且在大型磁盤上的開銷較低。文件系統塊的大小通常是2的冪,被塊設備的扇區大小限制在下面,並且通常受OS的頁面大小限制。

page size因操作系統和平臺而異(在Linux的情況下,也可能因組態而異)。與塊大小相似,較小的塊大小可減少內部碎片,但需要更多管理開銷。 32位平臺上的4kB頁面大小是常見的。

現在來描述間接塊。在UFS設計中,

  • inode描述了一個文件。
  • 在UFS設計中,inode可容納的數據塊指針數量非常有限(小於16)。具體的數字在派生實現中似乎有所不同。
  • 對於小文件,指針可以直接指向組成文件的數據塊。
  • 對於較大的文件,必須有間接指針,它們指向只包含更多指向塊的指針的塊。這些可能是指向屬於該文件的數據塊的直接指針,或者如果該文件非常大,則它們可能是更間接的指針。

因此,當使用間接指針時,文件所需的存儲量可能會大於包含其數據的塊。

並非所有文件系統都使用此方法來跟蹤屬於文件的數據塊。 FAT只使用單個文件分配表,該表實際上是一個巨大的一系列鏈表,許多現代文件系統使用extents

+0

它看起來很有希望,需要我花一些時間來研究它。 – 2009-07-05 14:59:49

3
  1. 我想他的意思塊,而不是頁面,一個塊是最小可尋址單元上的文件系統。

  2. 塊大小可以變化

  3. 不知道爲什麼,但也許它的文件系統接口暴露的API允許更精確的測量。

  4. 間接塊是一樣的原始數據不通過指針

  5. inode的佔用空間(塊)所引用的塊。這是作者的意思。