Files

ext4 中的“幽靈”文件?(ktorrent 分配的磁碟空間)

  • February 9, 2015

我正在使用 KTorrent 下載,並註意到當我選擇“在啟動 torrent 之前分配磁碟空間”時,它會在啟動時創建所有文件,可能是空的,以避免碎片。

當我在文件夾中並使用ls時,它會顯示分配的大小,但也會顯示總大小,並且這兩個不會相加。df也只報告實際使用的空間。

ls -lH

總計 745M
-rw-r--r-- 1 ##### ##### 542M 2 月 8 日 15:55 星際迷航 - 1x01 - The Cage.avi
-rw-r--r-- 1 ##### ##### 351M Feb 8 14:37 Star Trek - 1x02 - Where No Man Has Gone Before.avi
-rw-r--r-- 1 ##### ##### 346M 2 月 8 日 16:04 星際迷航 - 1x03 - Corbomite Maneuver.avi
-rw-r--r-- 1 ##### ##### 350M 2 月 8 日 16:02 星際迷航 - 1x04 - Mudd's Women.avi
-rw-r--r-- 1 ##### ##### 350M Feb 8 15:35 Star Trek - 1x05 - The Enemy Within.avi
-rw-r--r-- 1 ##### ##### 350M Feb 8 15:37 Star Trek - 1x06 - The Man Trap.avi
... (還有很多)

然而,有了這個-s選項,我得到了真正的尺寸:

ls -s

總計 728M
0 星際迷航 - 1x01 - The Cage.avi
351M 星際迷航 - 1x02 - 沒有人去過的地方.avi
42M 星際迷航 - 1x03 - Corbomite Maneuver.avi
195M 星際迷航 - 1x04 - Mudd's Women.avi
5.8M 星際迷航 - 1x05 - 內敵.avi
9.7M 星際迷航 - 1x06 - The Man Trap.avi
....(大小匹配)

這怎麼可能?文件系統(ext4)中是否有一些“文件大小”設置,ls讀取(有時)並df忽略?

Ktorrent 使用稀疏文件。基本上,稀疏文件是帶有“漏洞”的文件:沒有實際磁碟空間用於文件的“空”區域(即僅包含零)。

因此,您的文件似乎具有一定的大小(在您的情況下,是您的星際迷航影片的大小),但實際上並未將磁碟空間用於尚未“填充”的那些區域(在您的情況下,Ktorrent尚未下載),從而避免在真正需要之前浪費磁碟空間。

相反,文件系統使用元數據來指示這些區域是空的。如果你從他們那裡讀取,你只會得到零。

您可以使用 or 來查看此類文件的實際磁碟使用情況,以及使用duor來查看ls -s其明顯的磁碟使用du -b情況ls -l

df並且報告的總大小ls -l僅顯示實際磁碟使用情況。

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