稀疏文檔

稀疏文檔又稱稀疏檔案(英語:sparse file),是一種計算機檔案,它能嘗試在檔案內容大多為空時更有效率地使用檔案系統的空間。它的原理是以簡短的信息(元數據)表示空數據塊,而不是在在磁碟上占用實際空間來存儲空數據塊。只有真實(非空)的數據塊會按原樣寫入磁碟。

基本介紹

  • 中文名:稀疏文檔
  • 外文名:sparse file
  • 又稱:稀疏檔案
  • 屬性計算機檔案
簡介,優勢,缺點,Windows的NTFS,參見,

簡介

稀疏檔案(英語:sparse file)是一種計算機檔案,它能嘗試在檔案內容大多為空時更有效率地使用檔案系統的空間。它的原理是以簡短的信息(元數據)表示空數據塊,而不是在在磁碟上占用實際空間來存儲空數據塊。只有真實(非空)的數據塊會按原樣寫入磁碟。
在讀取稀疏檔案時,檔案系統會按元數據在運行時將這些透明轉換為“真實”的數據塊,即填充為零。應用程式不會察覺這個轉換。
大多數現代的檔案系統支持稀疏檔案,包括大多數Unix變種和NTFS。蘋果的HFS+不提供稀疏檔案支持,但在OS X中,虛擬檔案系統層支持在任何受支持檔案系統中存儲稀疏檔案,包括HFS+。2016年6月在WWDC宣布的蘋果檔案系統(APFS)支持稀疏檔案。稀疏檔案常被用在磁碟映像、資料庫快照、日誌檔案和科學套用中。

優勢

稀疏檔案的優勢是,它分配的存儲空間只在需要時使用:這樣節省了磁碟空間,並且可以創建很大的檔案,即使檔案系統中的可用空間不足。這也減少了首次寫入的時間,因為系統不會分配“跳過”的空間。如果初始分配需要寫入全零到空間,這也使得系統不必寫入兩次。

缺點

稀疏檔案的缺點包括:稀疏檔案可能碎片化;檔案系統的空餘空間報告可能產生誤導;包含稀疏檔案的檔案系統被填滿可能產生意外效果,例如只是重寫現有檔案的內容時遭遇磁碟已滿或超出配額錯誤——開發者未預料到檔案可能被稀疏;使用非顯式支持的電腦程式複製稀疏檔案可能會複製整個內容,即未壓縮的檔案大小,包括未實際在磁碟上分配的零空間——也就是使稀疏檔案失去稀疏屬性。稀疏檔案也不是被所有備份軟體和套用支持。不過,VFS的實現迴避了先前兩個缺點。在Windows上載入稀疏的執行檔(exe或dll)可能需要更多時間,因為檔案不被映射到記憶體和快取。

Windows的NTFS

如果一個檔案的大部分數據是0,則這個檔案被稱包含了稀疏數據集。 檔案壓縮可以有效率地表示稀疏檔案,但壓縮與解壓會帶來時間代價。 NTFS檔案系統支持稀疏檔案表示,並對檔案的讀寫操作透明。
為確定檔案系統是否支持稀疏檔案,調用GetVolumeInformation函式,使用lpFileSystemFlags參數,檢查返回結果對應於FILE_SUPPORTS_SPARSE_FILES比特標誌。 DWORD dwFileSystemFlags = 0; BOOL bOk = GetVolumeInformation("C:\\", NULL, 0, NULL, NULL, &dwFileSystemFlags, NULL, 0); bOk = dwFileSystemFlags&FILE_SUPPORTS_SPARSE_FILES; 判斷一個檔案是否是稀疏檔案:GetFileInformationByHandle
大部分檔案,在改變它的EndOfFile的時候,中間的空白會被作業系統填0,也就是說,如果用SetFilePointer和SetEndOfFile來產生一個很大的檔案,那么這個檔案它占用的是真正的磁碟空間,即使裡面全是0,系統默認的也會在DeviceIoControl()中的ControlCode里用FSCTL_SET_ZERO_DATA標記,這個標記使得那些檔案空洞被0所填充。為了節省磁碟空間,必須把一個檔案聲明為稀疏檔案,以便讓系統把那些無用的0位元組壓縮,並釋放相應的磁碟空間,這需要用DeviceIoControl()將標記改為FSCTL_SET_SPARSE。

參見

  • 檔案系統的對比

相關詞條

熱門詞條

聯絡我們