Linux

文件是否按順序保存在磁碟上?

  • February 15, 2017

據我了解,“稀疏文件”意味著文件可能有“間隙”,因此實際使用的數據可能小於邏輯文件大小。

Linux文件系統如何將文件保存在磁碟上?我主要對ext4感興趣。但:

  1. 文件可以按順序保存在磁碟上嗎?我的意思是文件的一部分位於物理地址 X,下一部分位於物理地址 Y,它不接近 X + 偏移量)。
  2. 我可以以某種方式控製文件順序嗎?

我想分配一個 10GB 的文件。我希望它在磁碟上是連續的,而不是在不同的偏移量之間劃分。 3. 它在不同類型之間的作用是否不同?

文件可以按順序保存在磁碟上嗎?我的意思是,文件的一部分位於物理地址 X 下,另一部分位於不接近 X + 偏移量的物理地址 Y 下)。

是的; 這被稱為文件碎片並且並不少見,尤其是對於較大的文件。大多數文件系統根據需要分配空間,或多或少是按順序分配的,但它們無法猜測未來的行為——因此,如果您將 200MiB 寫入文件,然後再添加 100MiB,那麼兩組數據將儲存在磁碟的不同區域(基本上,任何其他需要更多磁碟空間的寫入,發生在第一次寫入之後和第二次寫入之前,都可能介於兩者之間)。如果文件系統快滿了,情況通常會更糟:可能沒有足夠大的連續可用空間區域來容納新文件,因此必須將其分段。

我可以以某種方式控製文件順序嗎?我想分配 10GB 的大文件。我希望它在磁碟中是連續的,而不是在不同的偏移量之間劃分。

您可以在創建文件時告訴文件系統文件的目標大小;這將有助於文件系統以最佳方式儲存它。許多現代文件系統使用一種稱為延遲分配的技術,即盡可能晚地計算新文件的磁碟佈局,以便在執行計算時最大化可用資訊。您可以通過使用該posix_fallocate(3)函式告訴文件系統總共應該分配多少磁碟空間來幫助這個過程。現代文件系統將嘗試按順序執行此分配。

它在不同類型之間的作用是否不同?

不同的文件系統表現不同,是的。NILFS2 等基於日誌的文件系統分配儲存的方式與 Ext4 等基於範圍的文件系統不同,這只是變體的一個例子。

引用自:https://unix.stackexchange.com/questions/344623