文章編號: 814594 - 上次校閱: 2007年12月3日 - 版次: 5.2

如何找出和修正 NTFS 磁碟區上的磁碟空間問題

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
如需本文的 Microsoft Windows 2000 版本,請參閱下列的「Microsoft 知識庫」文件:
303079? (http://support.microsoft.com/kb/303079/ ) How to Locate and Correct Disk Space Problems on NTFS Volumes

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何檢查 NTFS 檔案系統的磁碟空間配置,以找出發生問題的檔案和資料夾,或在 Windows Server 2003 電腦中尋找毀損的磁碟區。

NTFS 支援許多磁碟區和檔案層級的功能,這些可能導致可用磁碟空間遺失或報告不正確。例如,NTFS 磁碟區可能會沒有緣由地突然變得很滿,而系統管理員又找不出原因,也找不到發生問題的資料夾和檔案。如果對最近曾複製過很大的檔案或許多小檔案的 NTFS 磁碟區進行惡意或未經授權的存取行為,就可能會發生上述問題。這些檔案的 NTFS 權限可能會在當時被移除或設定了限制。這種行為還可能在發生電腦問題或導致磁碟區毀損的電源中斷之後發生。

NTFS 磁碟區的磁碟空間配置可能會發生報告錯誤的情況,原因如下:
  • NTFS 磁碟區的叢集大小對於儲存在該處的平均大小檔案而言過大。
  • 檔案屬性或 NTFS 權限防止 Windows Explorer 或 Windows 命令提示字元顯示或存取檔案或資料夾。
  • 資料夾路徑超過 255 個字元。
  • 資料夾或檔案包含無效或保留的檔名。
  • NTFS 中繼檔 (例如主檔案表格) 已經擴充,而您無法解除其配置。
  • 檔案或資料夾包含替代的資料流。
  • NTFS 毀損導致可用空間報告為使用中。
  • 其他的 NTFS 功能可能會導致檔案配置混淆。

其他相關資訊

下列資訊可協助您最佳化、修復或深入瞭解 NTFS 磁碟區使用磁碟空間的方式。

叢集大小太大

只有包含內部 NTFS 中繼檔 (例如主檔案表格 (MFT)、資料夾索引和其他檔案) 的檔案或資料夾可能會耗用磁碟空間。這些檔案和資料夾會藉由使用叢集的倍數,而耗用所有的檔案空間配置。叢集是連續磁區的集合。叢集大小是由磁區格式化時的磁碟分隔大小而決定。 如需有關叢集的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
140365? (http://support.microsoft.com/kb/140365/ ) FAT 與 NTFS 的預設叢集大小
檔案在建立時會耗用最少一個單一的磁碟空間叢集,根據初始的檔案大小而定。稍後檔案中加入資料時,NTFS 會以叢集大小的倍數增加檔案的配置。

若要判斷目前的叢集大小和磁區統計資料,請從命名提示字元執行唯讀的 chkdsk 命令。如果要執行這項操作,請依照下列步驟執行:
  1. 按一下 [開始],再按一下 [執行],輸入 cmd,然後按一下 [確定]
  2. 在命令提示處輸入下列命令:
    chkdsk d:
    其中 d: 是您要進行檢查的磁碟機代號。
  3. 按一下 [確定]
  4. 檢視產生的輸出。例如:
    4096543 KB total disk space. <--- Total formatted disk capacity. 
    2906360 KB in 19901 files. <--- Space used by user file data.
    6344 KB in 1301 indexes. <--- Space used by NTFS indexes.
    0 KB in bad sectors.  <--- Space lost to bad sectors.
    49379 KB in use by the system.  <--- Includes MFT and other NTFS metafiles.
    22544 KB occupied by the log file.  <--- NTFS Log file - (Can be adjusted using chkdsk /L:size)
    1134460 KB available on disk.  <--- Available FREE disk space
    
    4096 bytes in each allocation unit.  <--- Cluster Size. (4K)
    1024135 total allocation units on disk. <--- Total Clusters on disk.
    283615 allocation units available on disk. <--- Available free clusters.
    注意:以 1024 乘以輸出所報告的 KB 值,以決定正確的位元組計數。例如:2906360 x 1024 = 2,976,112,640 位元組。
您可以使用這項資訊來判斷磁碟空間的使用方式以及預設的叢集大小。若要判斷這是否為叢集最佳大小,您必須判斷磁碟上浪費的空間。如果要執行這項操作,請依照下列步驟執行:
  1. 按一下 [開始],按一下 [我的電腦],然後再按兩下有問題磁碟區的磁碟機代號 (例如 D) 開啟磁碟區,然後顯示根資料夾所包含的資料夾和檔案。
  2. 按一下任何檔案或資料夾,然後再按一下 [編輯] 功能表的 [全選]
  3. 在選取了所有檔案和資料夾時,用滑鼠右鍵按一下任一檔案或資料夾,按一下 [內容],然後按一下 [一般] 索引標籤。

    [一般] 索引標籤會顯示整個磁碟區上的檔案和資料夾總數,並提供兩項檔案大小的統計資料:[大小][磁碟大小]
如果您沒有針對磁碟區中所包含的任何檔案或資料夾使用 NTFS 壓縮,則 [大小] 和 [磁碟大小] 之間的區別即可能代表某些浪費的空間,因為叢集大小比必要的大小還大。您可能還想使用較小的叢集大小,使 [磁碟大小] 值儘可能接近 [大小] 值。[磁碟大小] 和 [大小] 值之間如果有很大的差別,即代表預設的叢集大小對於磁碟區上所儲存的一般檔案大小而言過大。

您只能藉由重新格式化磁碟區來變更所使用的叢集大小。如果要執行這項操作,請備份磁碟區,然後藉由使用 format 命令和 /a 參數來指定適當的配置。例如:
format D:/a:2048
(這個範例所使用的叢集大小為 2 KB)。

注意:或者,您也可以啟用 NTFS 壓縮,以恢復由於錯誤的叢集大小所遺失的空間。不過,這樣可能會導致效能減損。

檔案屬性或 NTFS 權限

Windows 檔案總管和目錄清單命令 dir /a /s 都只會針對您具有存取權限的檔案和資料夾,顯示檔案和資料夾的總統計資料。根據預設,隱藏檔案和受到保護的作業系統檔案不在此列。這種行為可能會導致 Windows 檔案總管或 dir 命令顯示不正確的檔案和資料夾總計以及大小統計資料。

若要在整體的統計資料中包含這些檔案類型,請變更 [資料夾選項]。如果要執行這項操作,請依照下列步驟執行:
  1. 按一下 [開始],按一下 [我的電腦],然後按兩下磁碟區的磁碟機代號 (例如:D)。這樣會開啟磁碟區,並顯示根資料夾所包含的資料夾和檔案。
  2. [工具] 功能表上按一下 [資料夾選項],然後按一下 [檢視] 索引標籤。
  3. 選取 [顯示隱藏的檔案及資料夾] 核取方塊,然後按一下以清除 [隱藏保護的作業系統檔案] 核取方塊。
  4. 當您接到警告訊息時,按一下 [是],再按一下 [套用] 按鈕。
進行這項變更後,Windows 檔案總管以及 dir /a /s 命令便可以計算磁碟區中使用者擁有存取權限的檔案和資料夾總數。

若要判斷無法存取的資料夾和檔案,請依照下列步驟執行:
  1. 在命令提示字元處,從 dir /a /s 命令的輸出建立文字檔。

    例如:在命令提示處輸入下列命令:
    dir d:/a /s >c:\d-dir.txt
  2. 啟動備份或還原精靈。如果要執行這項操作:
    1. 按一下 [開始],再按一下 [執行],輸入 ntbackup,然後按一下 [確定]
    2. 按一下 [進階模式]
  3. 按一下 [工具] 功能表的 [選項],按一下 [備份記錄檔] 索引標籤,按一下 [詳細資料],再按一下 [確定]
  4. 在備份公用程式中,按一下 [備份] 索引標籤,然後選取受影響的整個磁碟區的核取方塊 (例如:D:),再按一下 [開始備份]
  5. 在備份作業完成後,開啟備份報告,並比較 NTBackup 記錄檔輸出的資料夾與您在步驟 1 中所儲存的 d-dir.txt 輸出。
由於備份可以存取所有檔案,所以它的報告可以包含 Windows 檔案總管和 dir 命令所沒有顯示的資料夾和檔案。當您想要搜尋無法藉由使用 Windows 檔案總管而存取的大型檔案或資料夾時,使用 NTBackup 介面來尋找磁碟區 (不必備份磁碟區) 可能是較為簡便的方式。

在找出您沒有存取權的檔案後,可以在 Windows 檔案總管中檢視檔案或資料夾的內容,並藉由使用 [安全性] 索引標籤新增或變更權限。根據預設,您無法存取 [System Volume Information] 資料夾。您必須新增正確的權限,才能在 dir /a /s 命令的輸出中包含該資料夾。

注意:您可能會注意到有些資料夾或檔案沒有 [安全性] 索引標籤。或者,您可能無法為受到影響的資料夾和檔案重新指派權限。當您嘗試存取這些資料夾和檔案時,可能會接到下列的錯誤訊息:

D:\folder_name\ is not accessible (D:\資料夾名稱\ 無法存取)

Access is denied (存取被拒)
如果您有此類資料夾,請聯絡「Microsoft 技術支援處」以取得額外的協助。如果要執行這項操作,請造訪下列 Microsoft 網站:
http://support.microsoft.com/directory/question.asp (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fdirectory%2fquestion.asp)

無效的檔名

包含無效或保留檔名的資料夾或檔案也可能會排除在檔案和資料夾統計資料外。包含前置或結尾空格的資料夾或檔案在 NTFS 中都是有效的,但是從 Win32 子系統的角度來看則是無效的。因此,不論是 Windows 檔案總管或命令提示字元都無法穩定地使用這些資料夾或檔案。
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
120716? (http://support.microsoft.com/kb/120716/ ) How to Remove Files with Reserved Names in Windows

您可能無法重新命名或刪除這些檔案或資料夾。當您嘗試執行這項作業時,可能會收到下列其中一則錯誤訊息:
重新命名檔案或資料夾發生錯誤

無法重新命名檔案:無法讀取來源檔案或磁碟。
- 或 -
刪除檔案或資料夾發生錯誤

無法刪除檔案:無法讀取來源檔案或磁碟。
如果有無法刪除或重新命名的資料夾或檔案,請聯絡「Microsoft 技術支援處」。如果要執行這項操作,請造訪下列 Microsoft 網站:
http://support.microsoft.com/directory/question.asp (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fdirectory%2fquestion.asp)

NTFS 主檔案表格 (MFT) 擴充

在建立和格式化 NTFS 磁碟區時,會建立 NTFS 中繼檔。這些中繼檔中有一個名為「主檔案表格」(MFT)。該表格在建立時很小 (約為 16 KB),但是隨著磁碟區上建立的檔案和資料夾增加,此表格也會膨脹。檔案在建立時,會以「檔案記錄區段」(FRS,File Record Segment) 的形式輸入 MFT 中。FRS 永遠是 1024 位元組 (1 KB)。隨著磁碟區上檔案的增加,MFT 也會膨脹。不過,當檔案刪除時,相關的 FRS 會標示為可供重複使用,但是 FRS 的總數以及相關聯的 MFT 配置仍會保留。這也就是為何您在刪除大量檔案之後,仍無法重新取得 MFT 所用空間的原因。

若要查看 MFT 實際的大小,可以使用內建的磁碟重組工具來分析磁碟區。產生的報告可提供有端 MFT 中的片段大小和數目的詳細資訊。

例如:
Master File Table (MFT) fragmentation
	Total MFT size =        26,203 KB
	MFT record count =      21,444
	Percent MFT in use =    81 %
	Total MFT fragments =   4
不過,如需有關整個 NTFS 所使用空間 (負荷) 的更完整資訊,請執行 chkdsk.exe 命令,然後再檢視下列程式碼行的輸出:
In use by system. 
目前只有協力廠商的磁碟重組工具可以整合未使用的 MFT FRS 記錄,並釋放未使用的 MFT 配置空間。

替代資料流

NTFS 允許檔案和資料夾包含替代資料流。藉由這項功能,您可以建立單一檔案或資料夾與多個資料配置之間的關聯。在檔案和資料夾上使用替代資料流具有下列限制:
  • Windows 檔案總管和 dir 命令不會在檔案大小或磁碟區統計資料中報告替代資料流中的資料。反而它們只會顯示主要資料流的總位元組數。
  • chkdsk 的輸出會正確報告使用者資料檔案所使用的空間,包括替代資料流。
  • 磁碟配額會正確追蹤和報告使用者資料檔案中的所有資料流配置。
  • NTBackup 會在備份記錄檔報告中記錄已備份的位元組數目,卻不會顯示哪些檔案包含替代資料流,也不會為替代資料流中包含資料的檔案顯示正確的檔案大小。

NTFS 檔案系統毀損

在極少有的情況下,NTFS 中繼檔 $MFT 或 $BITMAP 可能會毀損而導致磁碟空間遺失。您可以藉由對磁碟區執行 chkdsk /f 命令來識別和修正這個問題。在 chkdsk 快要結束時,如果您必須調整 $BITMAP,便會收到下列的訊息:
Correcting errors in the master file table's (MFT) BITMAP attribute. (在主檔案表格 (MFT) BITMAP 屬性中發生修正錯誤)CHKDSK discovered free space marked as allocated in the volume bitmap. (CHKDSK 發現可用空間在磁碟區點陣圖中標示為已配置)Windows has made corrections to the file system. (Windows 已對檔案系統進行了修正)

其他可能導致檔案配置混淆的 NTFS 功能

NTFS 還支援硬式連結和重新分析點,可以讓您建立磁碟區掛接點和目錄連接點。在嘗試判斷實體磁碟區所耗用的空間量時,這些額外的 NTFS 功能可能會導致混淆。

無論檔案資料位於該磁碟區的什麼位置,硬式連結都是檔案的目錄項目。每個檔案都至少有一個硬式連結。在 NTFS 磁碟區上,每個檔案都可能有數個硬式連結,因此單一檔案可以出現於多個資料夾中 (或以不同名稱出現在同一資料夾中)。因為所有的連結都指向相同的檔案,所以程式可以開啟任何連結,並對檔案進行修改。只有在刪除某個檔案的所有連結之後,才能從檔案系統中刪除該檔案。在您建立硬式連結後,程式可以透過使用任何其他檔名一樣的方式來使用該連結。

注意:Windows 檔案總管和命令提示字元會顯示所有連結的檔案都具有相同大小,即使它們所有都共用相同的資料,實際所用的磁碟空間量並不相同。

磁碟區掛接點和目錄連接點都允許 NTFS 磁碟機上的空白資料夾指向另一磁碟區上的根或子資料夾。Windows 檔案總管和 dir /s 命令會依照重新分析點,計算目的磁碟區上的檔案和資料夾數,然後在主機磁碟區的統計資料中納入這些資料。這可能會誤導您相信主機磁碟區中所用的空間,比實際所用的多。 如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
205524? (http://support.microsoft.com/kb/205524/ ) How to create and manipulate NTFS junction points


總結而言,您可以使用 chkdsk 輸出、NTBackup GUI 或備份記錄檔以及磁碟配額的檢視來判斷磁碟區使用磁碟空間的方式。不過,Windows 檔案總管和 dir 命令用於這項用途時,都有某些限制和缺點。


這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows XP 64-Bit Edition Version 2003
  • Microsoft Windows Small Business Server 2003 Standard Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
關鍵字:?
kbhowtomaster kbfileprintservices KB814594
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。