
所有 Linux 檔案系統的區塊大小均為 4kb。假設我有 10MB 的硬碟儲存空間。這意味著我有 2560 個可用區塊,假設我複製了 2560 個文件,每個文件大小為 1kb。每個 1 kb 區塊將佔用 1 個區塊,但不會填滿整個區塊。
現在我的整個磁碟已滿,但仍有 2560x3kb 的可用空間。如果我想儲存另一個 1mb 的文件,檔案系統允許我儲存嗎?它會寫入各個區塊中剩餘的可用空間嗎?有什麼概念可以解決這個問題嗎?
我希望得到一些澄清。先致謝
答案1
自第一個 Linux 誕生以來,預設區塊大小為 512 位元組。除了最近為了滿足不斷增加的磁碟大小而引入的 4k 區塊大小之外。這實際上幾乎是由磁碟硬體決定的(請參閱更多:https://unix.stackexchange.com/questions/178899/optimizing-logic-sector-size-for-physical-sector-size-4096-hdd)。
然而對於您的具體問題:您是對的,所有檔案都浪費了許多類型的檔案系統上最後一個區塊的未使用字節,這對於小檔案來說尤其浪費。但 btfrs 和 reiserfs 似乎能夠應對,根據https://en.m.wikipedia.org/wiki/Block_suballocation
答案2
檔案系統的區塊大小可以為 512 到(通常)65536 位元組。區塊大小可以透過 mkfs.xxx 選項指定。大多數 Linux 檔案系統中的預設區塊大小 - 4096 位元組。
某些檔案系統支援尾部打包和/或子區塊分配。 BTRFS、RaiserFS、ZFS、Raiser4 - 執行; XFS、Ext2/3/4 - 不需要。
如果您打算用多個小檔案填充一個分割區,則可以透過將區塊大小縮小到 512 或 1024 來減少浪費的「尾部」空間,或使用支援尾部打包或子區塊分配功能的 FS。