วิธีเติมศูนย์พื้นที่ว่างของดิสก์เสมือนบน windows สำหรับการบีบอัดที่ดีกว่า


46

วิธีเติมศูนย์พื้นที่ว่างของดิสก์เสมือนบน windows สำหรับการบีบอัดที่ดีกว่า

ฉันต้องการเครื่องมือโอเพนซอร์สที่เรียบง่าย (หรืออย่างน้อยฟรี) สำหรับสิ่งนั้น มันควรจะเขียนไฟล์ให้ใหญ่ที่สุดเท่าที่จะเป็นไปได้เต็ม0และลบทิ้งในภายหลัง หนึ่งรอบเท่านั้น (นี่ไม่ใช่เหตุผลด้านความปลอดภัย แต่สำหรับการบีบอัดเรากำลังสำรองเครื่องเสมือน)

ควรเรียกใช้จากภายในหน้าต่างและไม่ได้มาจากดิสก์

บน Linux ฉันทำแบบนี้ (ในฐานะผู้ใช้):

cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/

แก้ไข 1:ฉันตัดสินใจที่จะใช้sdeleteจากคำตอบที่ยอมรับ ฉันได้ดูความช่วยเหลือของ sdelete:

C:\WINDOWS\system32>sdelete /?

SDelete - Secure Delete v1.51
Copyright (C) 1999-2005 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: sdelete [-p passes] [-s] [-q] <file or directory>
       sdelete [-p passes] [-z|-c] [drive letter]
   -c         Zero free space (good for virtual disk optimization)
   -p passes  Specifies number of overwrite passes (default is 1)
   -q         Don't print errors (Quiet)
   -s         Recurse subdirectories
   -z         Clean free space

นี่เป็นรุ่นเก่า ฉันใช้สวิตช์ -c จากการเรียกใช้ครั้งที่ 2 และนี่ค่อนข้างเร็ว (ไวยากรณ์ใช้ได้เฉพาะเวอร์ชันเก่าก่อน V1.6):

c:\>sdelete -c c: (OUTDATED!)

ฉันมีความประทับใจนี่เป็นสิ่งที่ฉันต้องการ เครื่องมือ sdelete นั้นใช้งานง่ายและรับได้ง่าย

แก้ไข 2:ตามที่ scottbb ชี้ให้เห็นในคำตอบของเขาด้านล่างมีการเปลี่ยนแปลงเครื่องมือในเดือนกันยายน 2011 (รุ่น 1.6) ตัวเลือก -c และ -z มีการเปลี่ยนแปลงความหมาย การใช้งานที่ถูกต้องตั้งแต่ 1.6 เป็นต้นไปคือ

c:\>sdelete -z c:

แก้ไข 3:มี sdelete และ sdelete64 เวอร์ชัน 2.0 พวกเขาดูเหมือนจะเป็นรถเมื่อเป็นศูนย์ ดูเหมือนว่าจะติดที่ 100% เป็นเวลานานมาก บางคนรายงานนานกว่า 10 - 40 ครั้ง เวอร์ชั่นเก่ากว่า 1.61 ไม่มีปัญหานี้ ดูhttps://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils

แก้ไข 4:ตอนนี้มีปัญหาของพื้นที่ดิสก์จัดสรรเสมือน หากคุณมีดิสก์ 100GB ที่ไม่ได้เต็มรูปแบบและการใช้งานเพียง 30GB ในพื้นที่ศูนย์การบรรจุไม่ควรเพิ่มขึ้นอย่างรวดเร็วขนาดของแผ่นดิสก์เพราะตรงกันข้ามว่าจุดประสงค์ของการจัดสรรแบบไดนามิก มีคำตอบสำหรับOracle VM VirtualBox https://superuser.com/q/907196/44402 - แต่สำหรับกองอื่น ๆ เช่น VMWare, Xen, XenServer เป็นต้นต้องตอบแยกต่างหาก


2
sdeleteเป็นเครื่องมือที่เหมาะสมสำหรับงาน แต่การเปลี่ยนแปลงในเครื่องมือเดือนกันยายน 2011 (รุ่น 1.6) ทำให้คำตอบข้างต้นไม่ถูกต้อง -cและ-zตัวเลือกที่มีความหมายเปลี่ยนแปลง การใช้งานที่ถูกต้องในขณะนี้คือsdelete -z c:\
scottbb

ตรวจสอบให้แน่ใจว่าคุณใช้รูปแบบภาพ COW (คัดลอกเมื่อเขียน) หากคุณมีเครื่องจักรจำนวนมากที่ใช้การติดตั้งพื้นฐานแบบเดียวกัน
Matt

คำตอบ:


46

บน windows ให้ใช้เครื่องมือ sysinternals sdeleteเพื่อทำให้พื้นที่ว่างหมด sdelete -z c:คำสั่งที่คุณต้องการจะมีลักษณะเช่นนี้

การใช้งาน: sdelete [-p ผ่าน] [-s] [-q] ...  
sdelete [-p ผ่าน] [-z | -c] [ตัวอักษรไดรฟ์] ...  
- ลบคุณลักษณะอ่านอย่างเดียว  
- ทำความสะอาดพื้นที่ว่าง  
-p pass ระบุจำนวนการเขียนทับ (ค่าเริ่มต้นคือ 1)  
-q อย่าพิมพ์ข้อผิดพลาด (เงียบ)  
-s หรือ -r Recurse ไดเรกทอรีย่อย  
-z Zero พื้นที่ว่าง (ดีสำหรับการเพิ่มประสิทธิภาพดิสก์เสมือน)

สำหรับลินุกซ์ผมขอแนะนำให้คุณใช้zerofree


มาที่นี่เพื่อกระชับ VHD ของฉัน แบ่งปันลิงก์ที่เกี่ยวข้องจาก TechNet .. technet.microsoft.com/en-us/library/cc708394%28v=ws.10%29.aspx technet.microsoft.com/en-us/library/cc708317(v=ws.10 ) .aspx
Faiz

ผมสงสัยว่าถ้าเป็นศูนย์การบรรจุจะมีผลกระทบในเชิงบวกใด ๆ บนลินุกซ์มาตรฐานการเข้ารหัสไดรฟ์LUKS DM-ฝังศพใต้ถุนโบสถ์ ก่อนที่ฉันจะให้เครื่องทั้งหมดบู๊ตจากบูทสติ๊ก clonezilla และสำรองข้อมูลทางกายภาพของไดรฟ์ทั้งหมด - ส่วนที่เป็นศูนย์ภายในการเข้ารหัสจะนำไปสู่ส่วนที่เป็นศูนย์บนดิสก์ภายนอกหรือไม่ หรือมันจะยังคงเขียนเสียง (ไม่ได้ปันส่วน) เพื่อความปลอดภัยหรือไม่ หรือฉันควร zero crypt drive ที่ไม่ได้ติดตั้งแบบดิบ (ไม่ได้ดูเนื้อหาที่เข้ารหัส)? (และนั่นคือความคิดที่ดีคือเป็นที่น่าเชื่อถือตารางการจัดสรรในบริบทของไดรฟ์ crypted หรือไม่)
แฟรงก์ Nocke

ฉันจะตกใจถ้ามันทำสิ่งอื่นนอกจากเข้ารหัสโมฆะและเขียน "เสียง" เข้ารหัสลงในดิสก์
Dan Pritts

15

Windows มีเครื่องมือบรรทัดคำสั่งในตัวที่ทำสิ่งนี้: CIPHER ดูตัวเลือก / W

ดังนั้นคำสั่งทั้งหมดจะเป็น: cipher / w: c: (แทนที่c:ด้วยอักษรชื่อไดรฟ์จริง)

(มันเขียนเลขศูนย์ไปยังพื้นที่ที่ไม่ได้ใช้แล้วตามด้วย 0xff ดังนั้นคุณต้องดูและหยุดด้วย ctrl-c เมื่อมันเริ่มเขียน 0xff - ไม่เหมาะ แต่ว่างและพร้อมใช้งานแล้วใน Windows ตั้งแต่ XP อย่างน้อย)


3
วิธีการที่น่าสนใจ หยุดการประมวลผลก่อนที่จะเริ่มเลิกทำศูนย์ทั้งหมด +1 สำหรับโซลูชันสร้างสรรค์โดยใช้เครื่องมือที่มีอยู่แล้ว!
PsychoData

ฉันสงสัยว่าเป็นไปได้ในการตรวจสอบเมื่อเสร็จสิ้นการเขียนเลขศูนย์แล้วทำให้ยกเลิก ...
Frederick Nord

หากคุณใช้ฮาร์ดไดรฟ์ SSD ให้ตรวจสอบว่าคุณได้เปิดใช้งาน TRIM จากนั้นบล็อกที่ไม่ได้ใช้ทั้งหมดจะถูกลบออกอย่างรวดเร็วด้วยรูปแบบ 0xFF โดยเฟิร์มแวร์ของฮาร์ดไดรฟ์ สิ่งนี้สามารถใช้งานได้ดีกับอิมเมจดิสก์เสมือนที่สร้างโดยเซิร์ฟเวอร์เสมือน รูปภาพนั้นจะถูกเติมเต็มด้วยช่องว่างและจะเพิ่มบล็อกระบบไฟล์ในระบบไฟล์ที่โฮสต์
Znik

สิ่งนี้ทำงานได้ดีมากและเร็วกว่า SDelete -z (ซึ่งติดอยู่ที่ 100% โดยไม่ให้คำติชมอื่น ๆ )
psychowood

6

SDelete จะไม่เป็นศูนย์สำหรับการบดอัดของดิสก์เสมือน SDelete เริ่มต้นด้วยการ zeroing พื้นที่ว่าง แต่เติมด้วย 0xff แล้วสุ่มไบต์ดูวิธีการจัดเตรียมไฟล์ฮาร์ดดิสก์เสมือนของเซิร์ฟเวอร์เสมือน 2005 เพื่อส่งไปยัง Microsoft Product Support Servicesสำหรับวิธีตั้งค่า VHD สำหรับการบีบอัด

Precompact.exe อาจหายากด้วยเหตุผลบางอย่าง ผมพบว่าสำเนาดาวน์โหลดแยกที่นี่ อย่างไรก็ตามหากคุณมีพีซีเสมือนของ windows คุณสามารถขอรับได้จาก% programfiles (x86)% \ Windows Components \ Precompact.iso Virtual PC \ Integration


2
sdelete พร้อมกับตัวเลือก -c เป็นศูนย์เติม บางทีคุณอาจนึกถึงยูทิลิตี้การเข้ารหัสในตัวของ Windows ซึ่งไม่มีตัวเลือกแบบ zero-only?
Jeremy M

"SDelete นำไปใช้กับกระทรวงกลาโหมและการล้างมาตรฐาน DOD 5220.22-M" (จากเอกสาร) โดยเฉพาะซึ่งไม่ได้เป็นเพียงแค่ 0 คลัสเตอร์ sdelete -c ทำพื้นที่ว่างให้เป็นศูนย์ (หลังจากกรอกข้อมูล) อย่างไรก็ตามวิธีที่ sdelete ใช้นั้นไม่เหมือนกับ precompact และในหลาย ๆ กรณีจะทำให้ไดรฟ์มีขนาดใหญ่กว่า precompact ซึ่งออกแบบมาเพื่อกำจัดไดรฟ์เสมือนจริง
Jim B

สิ่งนี้น่าสนใจที่จะรู้เกี่ยวกับเครื่องมืออื่น ขอบคุณ
mit

2
SDelete สามารถออกจากดิสก์ด้วย 0s แต่ precompact ทำงานได้เร็วขึ้นมากและมีความหมายสำหรับสถานการณ์เช่นนี้
Chris S

2
@romkyns ไม่สำคัญอีกต่อไปเนื่องจาก Windows และ Hyper-V ทุกรุ่นที่ทันสมัยtrim(ตั้งแต่ Win7 และ Hyper-V 2012) ไม่จำเป็นต้องมีศูนย์ก่อนที่จะทำการบีบอัด ยูทิลิตี้ PreCompact เพียงส่วนที่เป็นศูนย์ของดิสก์ที่มีไฟล์ที่ถูกลบส่วนที่ไม่เคยใช้ถูกทิ้งให้แตะต้อง การใช้บางสิ่งเช่นsdeleteจะเติมดิสก์ไดนามิกให้มีขนาดคงที่ซึ่งสามารถบีบอัดกลับเป็นขนาดที่ใช้จริงเท่านั้น
Chris S

6

fsutilไม่ใช่โอเพ่นซอร์ส แต่มาพร้อมกับ Windows ดังนั้นจึงไม่มีค่าใช้จ่ายเพิ่มเติม ฉันใช้เพื่อทำให้พื้นที่ว่างเป็นศูนย์ในไดรฟ์ WD 250 GB 7200 RPM เปล่า ( F:) นี่คือสิ่งที่ฉันวิ่งจากบรรทัดคำสั่ง:

fsutil volume diskfree f:

ซึ่งแสดงรายงานนี้:

Total # of free bytes        : 249899469856
Total # of bytes             : 249997291520
Total # of avail free bytes  : 249899469856

ฉันใช้Total # of avail free bytesคำสั่งต่อไปนี้:

fsutil file createnew F:\clear 249899469856
fsutil file setvaliddata F:\clear 249899469856
fsutil file setzerodata offset=0 length=249899469856 F:\clear
del f:\clear

ใช้เวลาประมาณ 4 ชั่วโมงในการเขียนศูนย์ 250GB


3

ฉันก็กำลังมองหาวิธีการใช้ Cipher เพียงเขียน 0x00 แล้วออกเมื่อเริ่มเขียน 0xFF ไปยังพื้นที่ว่าง สิ่งนี้จะช่วยให้สามารถบีบอัดพื้นที่ว่างได้สูงสุด ฉันได้รับงานพื้นฐาน PowerShell ต่อไปนี้แล้ว

แทนที่ d: \ ด้วยไดรฟ์ที่ต้องการ

Function CipherFreeSpace
{
    $cipherjob = @()
    $Job = start-job -ScriptBlock {cipher /w:d:\ }
    while ($cipherjob -notcontains "Writing 0xFF")
    {
        Write-host "." -nonewline 
        Start-Sleep 2
        $cipherjob += $job | Receive-Job 
    }
    $Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace

ขอแสดงความนับถือ Simon


1

หากคุณใช้ VMware วิธีที่ดีกว่ามากคือการใช้เครื่องมือที่มีอยู่ใน VMware เพื่อเรียกคืนพื้นที่ว่างที่ไม่ได้ใช้บนไดรฟ์เสมือน

ฉันใช้สิ่งนี้เพื่อลดขนาดของดิสก์เสมือนจาก 28 กิกะไบต์ลงเหลือ 13 กิกะไบต์ ไมล์สะสมของคุณอาจแตกต่างกันไป

เมื่อฉันลองใช้sdelete -z c:มันเพิ่มขนาดของไดรฟ์เสมือนเป็น 30 กิกะไบต์ซึ่งเป็นขนาดสูงสุด

ดูเว็บไซต์ของ VMware และกระชับเสมือนฮาร์ดดิสก์Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disksซึ่งอยู่ภายใต้

ปรับปรุง

บางครั้งเครื่องมือ GUI ไม่น่าเชื่อถือเท่ากับเครื่องมือบรรทัดคำสั่ง ฉันพบปัญหาที่เครื่องมือ GUI ล้มเหลว แต่เครื่องมือบรรทัดคำสั่งทำงานได้ดี นี่คือตัวเลือกสำหรับVMware Desktop 10:

C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager -h
Diskname or some other argument is missing.
VMware Virtual Disk Manager - build 1895310.
Usage: vmware-vdiskmanager.exe OPTIONS <disk-name> | <mount-point>
Offline disk manipulation utility
  Operations, only one may be specified at a time:
     -c                   : create disk.  Additional creation options must
                            be specified.  Only local virtual disks can be
                            created.
     -d                   : defragment the specified virtual disk. Only
                            local virtual disks may be defragmented.
     -k                   : shrink the specified virtual disk. Only local
                            virtual disks may be shrunk.
     -n <source-disk>     : rename the specified virtual disk; need to
                            specify destination disk-name. Only local virtual
                            disks may be renamed.
     -p                   : prepare the mounted virtual disk specified by
                            the mount point for shrinking.
     -r <source-disk>     : convert the specified disk; need to specify
                            destination disk-type.  For local destination disks
                            the disk type must be specified.
     -x <new-capacity>    : expand the disk to the specified capacity. Only
                            local virtual disks may be expanded.
     -R                   : check a sparse virtual disk for consistency and attempt
                            to repair any errors.
     -e                   : check for disk chain consistency.
     -D                   : make disk deletable.  This should only be used on disks
                            that have been copied from another product.

นี่คือตัวอย่างของการลดขนาดดิสก์ บรรทัดคำสั่งนี้ใช้งานได้แม้จะมีคำสั่งเดียวกันจาก GUI ที่ล้มเหลว:

C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -k
 "H:\VMware\WindowsXP.vmdk"
  VixDiskLib: Invalid configuration file parameter.  Failed to read configuration file.
  Shrink: 100% done.

ข้อความแสดงข้อผิดพลาดที่เริ่มต้นด้วยVizDiskLibใหม่สำหรับ VMware Desktop 10 และสามารถละเว้นได้อย่างปลอดภัย


1
sdelete นั้นไม่ได้หมายถึงการลดขนาด vmdk มันใช้เพื่อเปลี่ยนพื้นที่ว่างที่มีอยู่ทั้งหมดเป็นศูนย์ในการเตรียมการสำหรับการดำเนินการย่อขนาด หากคุณไม่ทำเช่นนี้ไฟล์ที่ถูกลบและข้อมูลเด็กกำพร้าอื่น ๆ จะยังคงปรากฏอยู่ในดิสก์ เครื่องมือของ VMWare จะไม่สามารถเรียกคืนพื้นที่ดิสก์ที่ไฟล์เหล่านั้นยังคงครอบครองอยู่ได้ การเปลี่ยน "ไฟล์ที่ถูกลบ" เหล่านี้ให้กลายเป็นศูนย์ทำให้พื้นที่ดิสก์สามารถเรียกคืนได้อย่างสมบูรณ์เมื่อคุณเรียกใช้เครื่องมือย่อขนาด เหตุผลที่คุณเห็นการเพิ่มขึ้นของขนาดไฟล์บนดิสก์เสมือนเป็นเพราะ sdelete เติมเต็มพื้นที่ว่างทั้งหมดที่มีกับศูนย์
Leon Lucardie

ขอบคุณสำหรับการชี้แจงนี้ คิดว่าเครื่องมือสามารถได้รับประโยชน์จากการตั้งชื่อที่ดีขึ้นและ / หรือคำอธิบายแบบบรรทัดเดียวของเครื่องมือที่ใช้เมื่อคุณเรียกใช้
Contango


-1

เอ็มไอที

ฉันพบว่าสคริปต์ powershell ของ Simon ทำในสิ่งที่คุณต้องการโดยไม่มีปัญหาเกี่ยวกับรุ่นของ sdelete (สวิตช์ทำสิ่งต่าง ๆ ในรุ่นต่าง ๆ )

มันมีปัญหาหนึ่งรหัสที่ยังคงทำงานอยู่ แต่ฉันแก้ไข

ฉันแก้ไขสคริปต์เพิ่มเติมเพื่อล้างโฟลเดอร์ temp:

คุณจะต้องแทนที่ F: \ ด้วยตัวอักษรไดรฟ์ของคุณทั้งสองแห่ง

Function CipherFreeSpace
{
    $cipherjob = @()
    $Job = start-job -ScriptBlock {cipher /w:F:\ }
    while ($cipherjob -notcontains "Writing 0xFF")
    {
        Write-host "." -nonewline 
        Start-Sleep 2
        $cipherjob += $job | Receive-Job 
    }
    Stop-Process -processname cipher
    Start-Sleep -s 3
    Remove-Item -recurse F:\EFSTMPWP
    $Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace

-4

ทำไมเครื่องมือของบุคคลที่สามเมื่อ Windows รวมสิ่งที่คุณต้องการแล้วทั้งหมดเป็น "ฟรี" และเร็วที่สุดเท่าที่จะเป็นไปได้:

1) ตัวอักษรไดรฟ์อยู่format X: /fs:XXXX /p:#ที่ไหน เป็นระบบไฟล์ Yeither และเป็นจำนวนรอบXXXXX#

2) cleanคำสั่งdiskpart : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;

แต่คุณไม่ต้องการมากกว่าการผ่านครั้งเดียว - การอ้างสิทธิ์เป็นข้อมูลที่ล้าสมัยสำหรับกลยุทธ์การเขียนดิสก์สีแดง / เขียนที่ล้าสมัยผู้ที่ผลักดันผลิตภัณฑ์การขับเคลื่อนหวาดระแวงหรือ bs ส่งต่อในฐานะ "คำแนะนำจากผู้เชี่ยวชาญ"

แก้ไข: nvm พลาดส่วนพื้นที่ว่าง ...


1
ในหลายกรณีมีเครื่องมือของบุคคลที่สามที่ใช้งานได้ดีหรือดีกว่าติดตั้งง่ายกว่าหรือเชื่อถือได้มากกว่า แต่นี่คือทั้งหมด OT คำถามไม่เกี่ยวกับผู้เขียนมัน นอกจากนี้ Microsoft ยังได้รับ Sysinternals (ผู้เขียน SSDelete) เพราะพวกเขาเบากว่ารุ่นในตัว เพียงเปรียบเทียบ ProcessExplorer กับผลิตภัณฑ์ MS "TaskManager" -1 สำหรับการเริ่มต้น flamewar
Alojz Janez

คุณพลาดข้อกำหนด "โอเพ่นซอร์ส" ในคำถามใช่ไหม
Alojz Janez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.