เซิร์ฟเวอร์หนึ่ง (ที่รัน Windows Server 2016) หมดพื้นที่ว่างบนไดรฟ์ระบบ (C:\) ผมได้ตรวจสอบและทำความสะอาดตำแหน่งต่างๆ ที่ใช้ทรัพยากรมาก (WinSxS, โฟลเดอร์ TEMP, โปรไฟล์ผู้ใช้ที่ไม่ได้ใช้งาน, ไฟล์อัปเดตเก่า เป็นต้น) แต่ไม่ได้ผลชัดเจน ยังคงไม่มีพื้นที่เพียงพอ ในที่สุดก็พบว่าส่วนใหญ่ของไดรฟ์ระบบถูกครองครองโดยโฟลเดอร์ System Volume Information ในบทความนี้จะอธิบายถึงการใช้งานของโฟลเดอร์ System Volume Information ใน Windows ไฟล์อะไรที่ถูกเก็บไว้ และวิธีทำความสะอาดให้ถูกต้อง
วิธีเข้าถึงโฟลเดอร์ System Volume Information ใน Windows
โฟลเดอร์ System Volume Information จะถูกสร้างขึ้นอัตโนมัติที่รากของแต่ละไดรฟ์ (ไม่ว่าจะเป็น HDD ท้องถิ่น, SSD, USB Flash Drive, หรือการ์ด SD) โฟลเดอร์นี้จัดเก็บข้อมูลระบบที่เกี่ยวข้องกับ System Restore, Indexing, File History เป็นต้น
โดยค่าเริ่มต้น โฟลเดอร์ System Volume Information จะถูกซ่อนไว้ และมีเพียงบัญชี NT AUTHORITY\SYSTEM เท่านั้นที่สามารถเข้าถึงได้
เพื่อแสดงโฟลเดอร์นี้ ต้องปิดตัวเลือก "Hide protected operating system files" ใน File Explorer หรือรันสคริปต์ PowerShell ดังนี้:
$regkey = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
Set-ItemProperty $regkey Hidden 1
Set-ItemProperty $regkey HideFileExt 0
Set-ItemProperty $regkey ShowSuperHidden 1
Stop-Process -ProcessName explorer
แม้แต่แอดมินิสเตรเตอร์ก็ไม่สามารถเปิดและดูเนื้อหาโฟลเดอร์นี้ได้ หากพยายามเปิดโฟลเดอร์ System Volume Information ใน File Explorer ภายใต้ผู้ใช้รายใด (รวมถึงบัญชี Administrator ต้นฉบับ) จะได้รับข้อผิดพลาด "Access is denied":
Location is not available. C:\System Volume Information is not accessible. Access is denied.
เพื่อดูเนื้อหาโฟลเดอร์ ต้องกำหนดตัวเองเป็นเจ้าของไดเรกทอรีและให้สิทธิ์ NTFS ในการเข้าถึง (ทำได้ผ่านแท็บ Security ในคุณสมบัติโฟลเดอร์) แต่วิธีที่เร็วกว่าคือการกำหนดเจ้าของและให้สิทธิ์เข้าถึงไดเรกทอรีจาก Command Prompt:
takeown /f "C:\System Volume information"
icacls "C:\System Volume Information" /grant woshub\jwolf:F
ตรวจสอบในคุณสมบัติโฟลเดอร์ที่แท็บ Security ว่าบัญชีของคุณมีสิทธิ์ Full Control แล้ว
คุณยังสามารถดูเนื้อหาไดเรกทอรี System Volume Information ได้โดยการรันคอนโซล PowerShell ด้วยสิทธิ์ NT AUTHORITY\SYSTEM:
PsExec.exe -i -s powershell.exe
เพื่อดูเนื้อหาโฟลเดอร์ ให้รันคำสั่ง:
Get-ChildItem 'C:\System Volume Information\'
ขนาดโฟลเดอร์สามารถหาได้ด้วยคำสั่ง PowerShell นี้:
(Get-ChildItem 'C:\System Volume Information\' | measure Length -s).sum / 1Gb
หากต้องการคืนค่าสิทธิ์เดิมของโฟลเดอร์ System Volume Information ให้รัน:
icacls "C:\System Volume Information" /setowner "NT Authority\System"
icacls "C:\System Volume Information" /remove woshub\jwolf
โฟลเดอร์ System Volume Information ใน Windows คืออะไร?
โฟลเดอร์ System Volume Information เก็บอะไรบ้าง? ผมพบข้อมูลเกี่ยวกับบริการต่อไปนี้ที่จัดเก็บไฟล์ในโฟลเดอร์นี้ (รายการไม่ครบถ้วน):
- WindowsImageBackup — จุดกู้คืนระบบ (System Restore Points) ใน Windows เวอร์ชันเดสก์ท็อป หรือการสำรองข้อมูลสถานะระบบ (System State Backup) ที่ทำด้วย Windows Server Backup (
wbadmin) ในระบบปฏิบัติการเซิร์ฟเวอร์; - ฐานข้อมูลของบริการ Indexing ที่ใช้สำหรับการค้นหาไฟล์อย่างรวดเร็ว (รวมถึงการค้นหา Outlook);
- ฐานข้อมูลของบริการ Distributed Link Tracking;
- สแนปชอตของดิสก์ที่สร้างโดย Volume Shadow Copy ซึ่งใช้สำหรับกู้คืนเวอร์ชันเก่าของไฟล์ สำหรับแต่ละสแนปชอต จะสร้างไฟล์แยกต่างหากที่มีชื่อเป็น ID ยาว;

- การตั้งค่าคอต้า (Quota) ของดิสก์ NTFS;
- ฐานข้อมูลและส่วนย่อย (Chunks) ของบริการ Data Deduplication;
- ฐานข้อมูล DFS Replication (dfsr.db);
- ไฟล์ WPSettings.dat — สร้างโดยบริการ Storage (StorSvc);
- ไดรฟ์ USB จะจัดเก็บไฟล์ IndexerVolumeGuid ซึ่งกำหนดฉลากดิสก์ที่ไม่ซ้ำกันซึ่งใช้โดยบริการ Windows Search;
- AppxProgramDataStaging, AppxStaging — การสำรองข้อมูลแอป UWP ของ Windows (ใช้สำหรับกู้คืนหลังการถอนการติดตั้ง).
หากคุณใช้ Shadow Copies บนคอมพิวเตอร์หรือเซิร์ฟเวอร์เพื่อย้อนกลับไปยังเวอร์ชันเก่าของไฟล์/สถานะระบบ โปรดทราบว่าแต่ละสแนปชอต VSS ใหม่จะบันทึกข้อมูลไปยังไดเรกทอรี System Volume Information ทำให้ขนาดไดเรกทอรีนี้เพิ่มขึ้น ยิ่งสร้าง Shadow Copies บ่อย และไฟล์บนดิสก์เปลี่ยนแปลงบ่อย ขนาดของไดเรกทอรีนี้ก็จะเพิ่มขึ้นเร็วขึ้น
ในภาพหน้าจอด้านล่าง สามารถเห็นได้ว่าในโฟลเดอร์ System Volume Information มีไฟล์ระบบขนาดใหญ่กว่า 160 GB

วิธีทำความสะอาดโฟลเดอร์ System Volume Information
หมายเหตุ ไม่แนะนำให้ลบไฟล์ในโฟลเดอร์ System Volume Information ด้วยตนเอง เนื่องจากโฟลเดอร์นี้จัดเก็บข้อมูลสำหรับการกู้คืนระบบและข้อมูลสำหรับบริการสำคัญบางอย่าง
คุณสามารถทำความสะอาดไดเรกทอรี System Volume Information ได้อย่างรัดกุมโดยการปิดใช้งานจุดกู้คืนระบบ (System Restore Points) และ File History แต่ไม่ได้เป็นวิธีที่ยอมรับได้ในทุกกรณี
ขั้นแรก เรามาดูว่ามีอะไรเก็บอยู่ในไดเรกทอรีนี้ แสดงสถิติการใช้ Shadow Copies:
vssadmin list shadowstorage

vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool (C) Copyright 2001-2013 Microsoft Corp. Shadow Copy Storage association For volume: (E:)\\?\Volume{5a419164-9eba-11e5-84c5-004046bbefbb}\ Shadow Copy Storage volume: (E:)\\?\Volume{5a419164-9eba-11e5-84c5-004046bbefbb}\ Used Shadow Copy Storage space: 3.08 MB (0%) Allocated Shadow Copy Storage space: 896 MB (1%) Maximum Shadow Copy Storage space: 19.0 GB (29%) Shadow Copy Storage association For volume: (C:)\\?\Volume{843c6330-9866-11e5-80b3-806e6f6e6942}\ Shadow Copy Storage volume: (C:)\\?\Volume{843c6330-9866-11e5-80b3-806e6f6e6942}\ Used Shadow Copy Storage space: 912 MB (2%) Allocated Shadow Copy Storage space: 1.20 GB (3%) Maximum Shadow Copy Storage space: 3.98 GB (10%)
ตามที่เห็น 10% ของพื้นที่ไดรฟ์ระบบ (C:\) ถูกจัดสรรสำหรับไฟล์ Shadow Copy และใช้เพียง 2% เท่านั้น หากค่า Maximum Shadow Copy Storage space ตั้งเป็น UNBOUNDED หมายความว่าไม่มีการจำกัดขีดจำกัดสำหรับ Shadow Copies และอาจใช้พื้นที่ว่างทั้งหมดได้ Windows จัดสรร 10% ของขนาดดิสก์ทั้งหมดสำหรับการจัดเก็บ Shadow Copies โดยค่าเริ่มต้น
คุณสามารถลดขีดจำกัดการใช้ดิสก์ของ VSS เหลือ 2 GB โดยใช้คำสั่ง vssadmin คำสั่ง vssadmin มีไวยากรณ์ดังนี้:
vssadmin resize shadowstorage /on=[drive letter]: /For=[drive letter]: /MaxSize=[maximum size]
ในตัวอย่างของเราจะเป็นดังนี้:
vssadmin resize shadowstorage /on=c: /for=c: /maxsize=2GB

vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool (C) Copyright 2001-2013 Microsoft Corp. Successfully resized the shadow copy storage association
หากคุณสร้างการสำรองสถานะระบบด้วย WSB (Windows Server Backup) สำเนาสถานะระบบเก่าทั้งหมดสามารถลบได้ดังนี้ (ใน Windows Server Editions):
wbadmin delete systemstatebackup -keepversions:0

เพื่อทำความสะอาดสแนปชอต VSS เก่าบน Windows Server อย่างรวดเร็ว ให้ใช้เครื่องมือ diskshadow:
DiskShadow
Delete shadows OLDEST c:\
ทุกครั้งที่รันคำสั่ง จะลบ Shadow Copy (สแนปชอต) ที่เก่าที่สุดของโวล्यูม

เมื่อรันคำสั่ง wbadmin delete systemstatebackup ใน Windows 10 จะเกิดข้อผิดพลาด: "The DELETE BACKUP command is not supported in this version of Windows" เนื่องจากใน OS เดสก์ท็อป (Windows 10/8.1/7) จุดกู้คืนและขีดจำกัดสามารถจัดการได้เฉพาะจาก Windows GUI เท่านั้น เปิดคุณสมบัติระบบและคลิกที่แท็บ System Protection

เลือกไดรฟ์ระบบและคลิกปุ่ม Configure กล่องโต้ตอบการกำหนดค่าคอต้าสำหรับการจัดเก็บจุดกู้คืนระบบจะเปิดขึ้น คุณสามารถลดขนาดดิสก์สำหรับการจัดเก็บ Shadow Copies ได้ ที่นี่คุณสามารถลบจุดกู้คืนที่มีอยู่ทั้งหมด (ปุ่ม Delete) หรือปิดใช้งานการสร้างจุดกู้คืนโดยสมบูรณ์โดยเลือก Disable system protection

เพื่อลดขนาดของไดเรกทอรี System Volume Information คุณยังสามารถ:
- ย้ายข้อมูล VSS ไปยังไดรฟ์ NTFS อื่น (
vssadmin add shadowstorage /for=c: /on=d: /maxsize=30%); - ปิดใช้งานหรือกำหนดคุณสมบัติ Windows File History ใหม่;
- ทำความสะอาดไฟล์ระบบด้วยเครื่องมือสร้าง込 cleanmgr.exe (คุณสมบัติดิสก์ -> Disk Cleanup).

ทำความสะอาด Dedup ChunkStore ใน System Volume Information
เมื่อวิเคราะห์เนื้อหาของโฟลเดอร์ System Volume Information บน Windows Server คุณอาจสังเกตว่าไดเรกทอรี Dedup\ChunkStore ใช้พื้นที่มาก หมายความว่าคุณลักษณะ Data Deduplication ถูกเปิดใช้งานสำหรับโวล्यูมนี้
หากบริการ Windows Data Deduplication พบชังค์ (ส่วนย่อย) ที่เหมือนกันในไฟล์บนโวล्यูม จะแทนที่ด้วยลิงก์ไปยังชังค์ที่ไม่ซ้ำกัน ซึ่งถูกบันทึกไว้ในไดเรกทอรี System Volume Information หากคุณย้ายหรือลบไฟล์ที่ถูก Optimize จากโวล्यูมที่เปิดใช้งาน Deduplication ชังค์เก่าจะไม่ถูกลบทันที บล็อกเหล่านี้จะถูกลบโดยงาน GarbageCollection พิเศษที่รันสัปดาห์ละครั้ง นี่คือเหตุผลที่พื้นที่บนโวล्यูมที่เปิดใช้งาน Deduplication ไม่ถูกคืนทันที

เพื่อเริ่มกระบวนการลบชังค์ที่ไม่ได้ใช้ทันที ให้รันคำสั่ง PowerShell:
start-dedupjob -Volume C: -Type GarbageCollection
งาน Deduplication ถัดไปจะตรวจสอบความสมบูรณ์ของชังค์ที่เหลือ:
start-dedupjob -Volume C: -Type DataScrubbing
เพื่อติดตามงานเหล่านี้ ให้ใช้ cmdlet Get-DedupJob
หลังจากงานเสร็จสิ้น ชังค์ที่ไม่ได้ใช้ในไดเรกทอรี System Volume Information จะถูกลบ และพื้นที่ดิสก์เพิ่มเติมจะถูกปลดปล่อย
ระวังเมื่อปิดใช้งาน Data Deduplication สำหรับโวล्यูมด้วยคำสั่ง Start-DedupJob -Volume D: -Type Unoptimization คำสั่งนี้จะลบชังค์ทั้งหมดในไดเรกทอรี System Volume Information และไฟล์ที่ไม่ได้ Optimize บนโวล्यูมจะกลับสู่ขนาดเดิม ดังนั้น ก่อนปิดใช้งาน Optimize ให้แน่ใจว่ามีพื้นที่ดิสก์ว่างเพียงพอ