請選擇 進入手機版 | 繼續訪問電腦版

NoName Team 電腦資訊討論區

 找回密碼
 我要註冊
搜索
查看: 313|回復: 3

[討論] [請益] NTFS 可用空間 未釋放 ( 困擾多年. XP, win7 )

[複製鏈接]
發表於 2020-10-25 18:21:41 | 顯示全部樓層 |閱讀模式
本帖最後由 BuD_DGN 於 2020-10-25 18:27 編輯

這應該算是 NTFS 怪事,

懇請網友指點, 謝謝.

這最常發生在 檔案用 NTFS 屬性壓縮 後 (內容 屬性 進階 壓縮)

有時讀取 "NTFS 壓縮檔案" 也會發生 (純粹只讀取)

EX:
     一個 100 MB 檔案 用 NTFS 屬性壓縮 後, 只有 70 MB, 應釋放 30 MB

     可用空間 應增加 30 MB, 但卻未釋放.

     這時用 CHKDSK 看到 可用空間 確實增加 30 MB.

     但 "真正"可用空間 卻根本一點都沒增加 !

解決方法

1.     以前多用幾次 CHKDSK 後就會釋放 應釋放空間. 但這方法常常失靈.

2.     什麼事都不做, 等一陣子就會 自動釋放 應釋放空間.

     但這方法也常常失靈, 而且要等很久.
 樓主| 發表於 2020-10-25 21:11:02 | 顯示全部樓層
這與 MFT 無關, MFT 佔用空間 永遠不會釋放,

但我指的現象 終究會釋放 只是要等很久.

這困擾多年. 卻沒發問 因為這事 不易說清楚, 容易誤解.

懇請看懂也理解的網友 幫我說清楚 ( 縱使不知如何解決 )

這是 200 MB RamDisk 上發生的事

原本以為 只有 RamDisk 會發生, 後來發現 HD, SSD 也會發生

只是 數 GB HD, SSD 少個 30/50 MB 沒差,

但是 200 MB RamDisk 少個 30/50 MB 就很嚴重.

作者ghostcode 發表於 2020-10-25, 07:34 PM #3     NTFS 內部管理用的 MFT 只會成長,不會縮小。就算檔案目錄刪光也不會回到原本大小。
除非把資料全搬走,重新格式化,在搬回來。

去查一下 NTFS 的 MFT 就知道為何?

發表於 2020-10-26 21:41:51 | 顯示全部樓層
本帖最後由 阿達金田一 於 2020-10-30 13:37 編輯

我很久之前也曾經有這個問題...但真心找不到什麼資料
不過我也只好奇...
早期硬碟空間不夠用時...我也都會磁碟壓縮...像 win98 的 DriveSpace
後來換 XP + NTFS 時...(所以真的是很久之前)
就改用 NTFS 的壓縮功能
如樓主所說 NTFS 壓縮 (不是 compact 壓縮)
不會馬上釋放空間...一般都是等系統自動釋放

MFT 有沒有影響...我推測是有...
但我覺的如果只是算 MFT 是否空間佔用...
我覺的如樓主說的其實沒有(沒關係)
MFT 佔用是算資料(檔案/目錄)數量...
而 NTFS 壓縮...是壓縮本來就有的檔案
所以檔案的 MFT 來就有已經有...
就算 壓縮轉換會有 臨時 或 中繼 (有沒有不知道...就當它有...)
那...那怕會佔用
1個檔案 MFT 也不會佔 幾M ...頂多幾K
而 MFT 佔多少主是看數量...

那我又為何前面說 MFT 有影響
因為 NTFS 管理主要結構資料就是靠 MFT ...
而問題點應該在於
NTFS 本身的 資料壓縮 和 已壓檔的空間釋放 的 管理模式 和 結構
而這個點...和 MFT 應該是有相關的 (可能也不只 MFT 例如 BITMAP 等可能也有關)

題外....MFT 並非不能縮小
MFT 也只是資料...只要 NTFS 自身能維持合理(法)結構...就可以縮小
只是...很少有軟體可以處理針對 MFT 縮小 ...好一點的...也就是 MFT 重組
一般的做法...就是...
檔案所移到別的磁碟...格式化...再移回去...(就是這麼簡單也很土法鍊鋼)
以下 M$ 資料
https://docs.microsoft.com/zh-tw/troubleshoot/windows-server/backup-and-storage/disk-space-problems-on-ntfs-volumes
中有提
目前只有協力廠商 defragmenters 整合未使用的 MFT FRS 記錄,並回收未使用的 MFT 分配空間。

有點機翻...看不懂沒差...
推測大概就是 Win 自己會管理...
不然就是 Win 自帶 磁碟重組 會管理...
再不然就是要用特殊的磁碟重組程式去處理
不過能回收不代表會回收

簡單說...如果空間還有很多...Win 也不會特別去管 MFT ... 所以基本上等不會縮小

其它相關
https://docs.microsoft.com/zh-tw ... erves-space-for-mft

另外 MFT 不是新增一個檔就會增加....而是會先去用 MFT 未使用 的部份
簡單說
假設 MFT 記錄 10000 個檔案資料...然後砍了 5000 個檔案
10000 記錄佔用不會縮小...但有效有用的只有 5000 ...
後面在新增檔案時...都會先去用 未使用(失效) 的部份...
直到 MFT 不夠用 總合超過 10000

這個概念換個類似的想法...就是 檔案刪除(不是回收筒) 和 還原
為啥 檔案刪除 一定程層上...可以回還
不就是 "沒有" 真的刪除...但是在使用上(MFT 上) 是算成刪除的
但只要後來的新增的檔案...還沒佔用到(指 MFT 和 檔案本身資料)...
因為結構還在...所以可以還原

老實說一般使用上...根本不太去用考量 MFT ...
雖然一些網文中的 12.5% 看上去很嚇人
但可能多少有點誤解 (上面給的 M$ 資料也有提到 12.5%)
就我個人自己理解和推測的 12.5%
是指... MFT 連續磁區 保留....而不是 MFT 直接留 12.5%
連續磁區 保留...是指...檔案在寫入時...不會先寫到保留區...這是優先保留給MFT
但如果 保留區 外的空間都用光了...檔案在寫入時...一樣會寫到保留區
保留的目的只是為了 MFT 能 連續磁區 效能比較好 (這樣也就不用特意 重組MFT)

老實說這個很容易就推測的出來...因為...現在硬碟都這麼大
1T ... 1000G ... 12.5% 就 125G 了
那實際上...1T 分區...NTFS 格式化後會只剩 1000-125=875G  嗎...
通常是還有 99x G  吧 ...
我一個 1.5T 左右的分區...chkdsk 看一下 加一加也占 600M 不到 (索引 系統 記錄)

已經處理 301568 個檔案記錄。   
...略
磁碟空間總計 1610612735 KB。
284093 個檔案共 1244449988 KB。
14490 個索引共      72236 KB。
損壞的磁區共          0 KB。
系統使用空間     425439 KB。
記錄檔共佔用      65536 KB。
磁碟可用空間  365665072 KB。

好了題外有點扯遠了...但也不是沒關係
就像 NTFS 的 MFT 和 檔案刪除
都有他的管理和行為機制/模式/流程

有的會立即更新或反映....有的不會...
而且 NTFS 也不是只有一版...是有分版本
再加上...不同版本的Win...NTFS Driver 在處理上也不完全都一樣
所以...我個人推測...NTFS壓縮 也是如此...
就像對檔案 剪下 貼上
在過程中並不是原來的檔案就沒了...其實是 複製 + 刪除
如果 複製 失敗...自然就不會做後面的刪除 原檔 也還在

那 NTFS 壓縮呢
這裡先想像一下 一般壓縮
假設 我有空間 1000M
有個檔案佔 700M 壓縮後可以壓到 350M
我剩餘空間 300M ... 壓縮後的可以剩 650M

這能直接壓縮嗎...
基本上是不能...原因和前面說的  剪下 貼上 差不多

那怕壓縮後可以多350M ...那也是壓縮後
同空間下...都要有足夠的剩餘空間做為 臨時/緩衝/中繼 使用

那 NTFS 壓縮...也應該如此...
也就是說 壓縮過程... 空間 反而是減少的
那怕壓縮完成...沒刪除 原來未壓縮資料 的話...空間反而是減少
而且壓縮是要時間的 尤其是對 大數量 或 大容量 的壓縮...
而所謂 釋放 就是把原本的資料刪除

但這又回到前面說的 刪除 ... 真的 刪除 了嗎
這扯到 NTFS 低層運作...我不是專業的...給不了答題

前面說的還只是 NTFS 不出 bug 沒出錯 資料沒損毀

另外前面2個 M$ 文章....也是有提到 NTFS 也是有可能 出錯 損毀 時...
也一定會有空間被佔不能釋放的可能
你可以理解成...實際上沒在用...但 MFT 中...記錄因出錯或損毀...記成有在用...

但 NTFS 本身有一定的容錯和修正...
所以只要是能被 chkdsk 修回來的...空間就可以 "正常" 的釋放回來
而 NTFS 一般 存取 有錯...也會做一定的修正(被存取的部份)

不過一部份我覺的是 NTFS 壓縮太久...
如果只是 單檔 小檔(要多小我就不知道...要看壓縮速度和寫入速度)
都還好...應該不大太會這樣...
我以前遇到這問題...就是把整個磁碟都壓縮...然後要壓很久...
而且一開始空間是慢慢減少...然後增增減減...後面才都減少

我當時也是沒有很仔細去研究(也沒資料)...
因為反正也不太影響使用...
當時只是大概推測一下原因...不一定對

所以如果像 200M Ramdisk ...
實測一下剩餘空間寫入...有沒有問題比較實際
簡單說 200M - 100M(70M壓) = 100m (130M)
看 70M壓時...能不能寫入 超過 100M 的檔案就好
注意 100M 檔案 單檔NTFS壓縮 不要對整個 disk
因為 壓縮 可能是要有保留空間
所以剩 130M 但如果對整個磁碟都壓縮
等於你寫入檔案到磁碟時...都是用壓縮...因為剩餘空間不足那可能...寫不到 130M ...


不過 200M 太小了也不太推用 NTFS 壓縮
因為前面也說了...壓縮也是要有足夠空間
(純粹亂猜...也或許 NTFS 使用壓縮時也有保留給壓縮用的空間)

另外...NTFS 壓縮...其實最好是用在...不常寫入的檔案
簡單說就是 放著不動的 靜態檔 ...

所以通常是用在一些 不再寫入的 log 檔 (就是舊的 log)
或是一些 driver file 或 system file ( 不過這個如果要壓縮 win10 用 compact 還比較好 )
若是需要常常寫入的動態檔...壓縮...是要空間的...而且有寫入可能就要再壓一次...所以反而不實用
發表於 2020-10-30 12:54:51 | 顯示全部樓層
我是遇到壓縮反而造成檔案無法讀取,要用chkdsk的問題
還有檔案讀寫很慢反而需要解除壓縮的狀況
容量夠的情況不建議壓縮

另外一個無關的情況
請勿使用SMR硬碟,再進行壓縮,資料會有問題
https://www.seagate.com/tw/zh/internal-hard-drives/cmr-smr-list/
您需要登錄後才可以回帖 登錄 | 我要註冊

本版積分規則

小黑屋|手機版|NoName Team 電腦資訊討論區 |網站地圖

GMT+8, 2020-11-27 19:36 , Processed in 0.088453 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表