Filesystems

ext4 如何決定文件的塊數?

  • May 6, 2016

我正在使用stat基本上顯示 inode 資訊的命令。雖然我顯示的是一個小文件(146 個字元)的資訊,但它顯示了 8 個塊。我想知道為什麼會這樣?由於頁面的大小應該是 4KB,我希望這個數字是 1。順便說一句,我使用的文件系統是 ext4。為您提供更多詳細資訊:

更多 tmp.sh

#DATE=$(date +"%Y%m%d_%H%M%S")
#cp /var/log/filter.log /var/log/logHistory/filter_{$DATE}.log
dd=$(date --date='-1 day' +"%Y%m%d")
rm filter_$dd*

統計tmp.sh

 File: ‘tmp.sh’
 Size: 146         Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 1835522     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/timestring)   Gid: ( 1000/timestring)
Access: 2016-05-05 17:34:08.251864800 -0700
Modify: 2015-01-22 20:40:18.971521274 -0800
Change: 2015-01-22 20:40:18.975521274 -0800
Birth: -

報告的“塊”stat()為 512 字節單位。ext4 使用的正常塊大小是 4kb,即這些“塊”中的 8 個。這意味著 ext4 上的文件使用的空間必須是 8 個“塊”的整數倍,因此任何小於或等於 4096 字節的文件使用的最小大小是 8512 字節塊。

ext4 文件系統在創建文件時**推測文件的大小。**從此連結引用以下內容:

首次創建文件時,塊分配器會推測性地為文件分配 8KiB 的磁碟空間,假設空間將很快被寫入。當文件關閉時,未使用的推測分配當然會被釋放,但如果推測是正確的(通常是完整寫入小文件的情況),則文件數據將在單個多塊範圍內寫入。

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