Windows(或 NTFS)是否支援假大小的佔位符檔案?

Windows(或 NTFS)是否支援假大小的佔位符檔案?

每次啟動 Photoshop 時,它都會立即在快取所在的硬碟上建立一個 2GB 的臨時檔案。它是一個碟片驅動器,我聽不到任何通常與寫入 2GB 資料相關的硬碟噪音。是否可以建立一個具有「假」大小的空佔位符檔案來保留空間,以防以後確實需要快取一些資料?

答案1

在 NTFS 磁碟區上可以透過兩種不同的方式來完成此操作。

SetEndOfFile功能,在 NTFS 檔案系統上,為檔案保留磁碟空間,但不會用任何內容填滿該空間。由於更新 NTFS 簿記,此處可能會產生一些磁碟活動。當程式對超過先前寫入的最後一個位元組的檔案執行任何操作時,NTFS 會在最後寫入的(最後一個「有效」)位元組和請求的位元組之間進行塗寫(以避免安全問題)並更新有效資料指標。

然後還有稀疏文件。與以 擴展的普通檔案不同SetEndOfFile,NTFS 會追蹤哪些磁區中包含實際數據,而不僅僅是哪個位元組是最後一個包含有效資料的位元組。未寫入任何內容的長串零不會儲存在實體磁碟上。

fsutil sparse queryflag您可以透過後跟檔案的路徑來檢查檔案是否稀疏。如果它不稀疏,則程式正在使用第一種方法。

延伸閱讀:為什麼我的單字節寫入會花很長時間?

答案2

是的,這就是所謂的「稀疏檔案」。

NTFS 和 ReFS 支持,但 FAT32 和 ExFAT 不支持。

程式可以明確告訴作業系統檔案的哪些位元組範圍應該在磁碟上擁有空間(預設情況下,這就是一切)。其他未分配的部分被視為僅包含大量值為 0 的位元組(如果由程式讀取)。

在檔案屬性對話方塊中,您將看到「正常」檔案大小,即「假」檔案大小,以及磁碟上使用的大小,即指派的部分(加上一些位元組以獲得完整的 HDD 區塊)。

另請參閱https://en.wikipedia.org/wiki/Sparse_file

答案3

內建工具fsutil可以快速建立一個全是零的非稀疏文件,擴展名為fsutil file createNew <filename> <bytes>.它將佔用磁碟空間,但不需要寫入零區塊(假設您使用的是 NTFS 或類似檔案系統)。

以下是建立 10GB 檔案的範例。硬碟可用空間將減少 10GB,但該操作應該很快就會發生。

C:\>fsutil file createNew dummy 10737418240
File C:\dummy is created

C:\>fsutil sparse queryFlag dummy
This file is NOT set as sparse

相關內容