文件空洞的做用:文件系統幫你作到磁盤預留

今天看《TLPI》,看到了文件空洞這個名詞,工做了三四年第一次聽到這個詞。linux

那文件空洞究竟是什麼?在哪些場景會用到呢?編程

 

文件空洞的是什麼?:spa

          linux下讀文件的時候,若是lseek指定的讀偏移量超過了文件結尾,此時read調用返回的是0,標識文件結尾。可是對於write調用,卻能夠繼續寫入數據。指針

          從文件結尾後到新寫入的數據間這段空間稱爲文件空洞。進程

 

文件空洞有什麼特色?it

         1.文件空洞並不佔據磁盤空間,直到後續真正寫入了數據纔會落到磁盤。在此以前,空洞區對應鏈表指向的是空指針,文件系統將其解釋爲0的子串。(因此在創建文件空洞的時候,速度會很是快。沒磁盤IO)class

         2.文件系統會扣減程序可用磁盤空間數值大小,作到預留pdf

 

文件空洞在哪一個場景可能用到?(下面是個人理解,不必定正確,歡迎指正)書籍

         想象一個下載數據的場景,你須要下載10G的電影,那你的磁盤如今有11G剩餘,你的網速沒那麼快,可能須要下載1個小時,在這1個小時內磁盤可能會被其餘程序佔用。下載

         因此呢,你能夠利用文件空洞作好預留。創建一個10G的文件空洞,雖然文件系統沒有真正落盤,可是可用磁盤空間會被真正扣減,也就是能夠作到預留。

         因此即便你後續下載再慢,文件空洞機制也幫你保證了,你這個電影不會由於磁盤不夠而中斷。

         若是沒有文件空洞,想象,你的電影下到5G,磁盤被另外一個進程佔用了剩餘的6G,下載被迫中斷。

 

 

上面的內容出自上篇提到的《UNIX系統編程》,英文簡稱《TLPI》

我把《UNIX系統編程》電子版書籍放到了個人公衆號,若是須要能夠掃碼關注個人公衆號&回覆   "TLPI",便可下載 《UNIX系統編程》《The Linux Programming Interface》的pdf版本

相關文章
相關標籤/搜索