Bagaimana nol mengisi ruang kosong disk virtual di windows untuk kompresi yang lebih baik?
Saya ingin alat open source sederhana (atau setidaknya gratis) untuk itu. Mungkin harus menulis file sebesar mungkin penuh 0
dan menghapusnya setelah itu. Hanya satu pass (ini bukan karena alasan keamanan tetapi untuk kompresi, kami membuat cadangan mesin virtual).
Harus dijalankan dari dalam windows dan bukan dari disk.
Di Linux saya melakukannya seperti ini (sebagai pengguna):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
Sunting 1: Saya memutuskan untuk menggunakan sdelete dari jawaban yang diterima. Saya telah melihat bantuan 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
Ini adalah versi lama. Saya menggunakan saklar -c dari doa ke-2 dan ini cukup cepat (sintaks hanya berlaku untuk versi yang lebih lama sebelum V1.6):
c:\>sdelete -c c: (OUTDATED!)
Saya mendapat kesan ini melakukan apa yang saya inginkan. Alat sdelete mudah digunakan dan mudah didapat.
Sunting 2: Seperti yang ditunjukkan scottbb dalam jawabannya di bawah, ada perubahan September 2011 pada alat (versi 1.6) Opsi -c dan -z telah mengubah makna. Penggunaan yang benar dari 1,6 dan seterusnya adalah
c:\>sdelete -z c:
Sunting 3: Ada versi 2.0 dari sdelete dan sdelete64. Mereka tampak buggy saat memusatkan perhatian. Tampaknya akan macet 100% untuk waktu yang sangat lama. Beberapa orang telah melaporkan 10 - 40 kali lebih lama. Versi yang lebih lama 1.61 tidak memiliki masalah ini. Lihat https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils
Sunting 4: Sekarang ada masalah ruang disk virtual yang dialokasikan secara dinamis . Jika Anda memiliki disk 100GB yang tidak penuh dan hanya menggunakan 30GB pada host, nol pengisian tidak boleh meningkatkan ukuran disk secara dramatis karena itu bertentangan dengan tujuan alokasi dinamis . Ada jawaban untuk Oracle VM VirtualBox
https://superuser.com/q/907196/44402 - tetapi pada tumpukan lain seperti VMWare, Xen, XenServer, dll., Ini perlu dijawab secara terpisah.
sdelete
adalah alat yang tepat untuk pekerjaan itu, tetapi perubahan September 2011 ke alat (versi 1.6) membuat jawaban di atas salah. The-c
dan-z
pilihan memiliki makna berubah. Penggunaan yang benar sekarang adalahsdelete -z c:\
Jawaban:
Pada windows gunakan alat sysinternals sdelete untuk menghapus semua ruang kosong. Perintah yang Anda inginkan akan terlihat seperti ini
sdelete -z c:
.Untuk Linux saya sarankan Anda menggunakan zerofree .
sumber
Windows sudah memiliki alat baris perintah bawaan yang melakukan ini: CIPHER. Lihat opsi / W.
Jadi perintah lengkapnya adalah: cipher / w: c: (ganti c: dengan huruf drive yang sebenarnya)
(ia menulis nol ke ruang yang tidak digunakan, lalu 0xff, jadi Anda harus menontonnya dan menghentikannya dengan ctrl-c ketika mulai menulis 0xff - tidak ideal, tetapi gratis dan sudah tersedia di Windows sejak XP setidaknya)
sumber
SDelete tidak akan nol ruang untuk pemadatan disk virtual. SDelete dimulai dengan memberi nol pada ruang kosong, tetapi kemudian mengisinya dengan 0xff dan kemudian byte acak Lihat Cara menyiapkan file hard disk virtual Server 2005 untuk dikirim ke Layanan Dukungan Produk Microsoft Untuk cara mengatur VHD untuk pemadatan
Precompact.exe bisa sulit ditemukan karena alasan tertentu. Saya menemukan salinan yang dapat diunduh terpisah di sini . Namun jika Anda memiliki PC virtual windows Anda juga bisa mendapatkannya dari% programfiles (x86)% \ Windows Virtual PC \ Komponen Integrasi \ Precompact.iso
sumber
trim
(pada Win7 dan Hyper-V 2012), tidak perlu nol sebelum dipadatkan. Utilitas PreCompact hanya memusatkan perhatian pada disk dengan file yang dihapus, bagian yang belum pernah digunakan tidak tersentuh. Menggunakan sesuatu sepertisdelete
akan mengisi disk dinamis ke ukuran statis, yang kemudian dapat dipadatkan kembali ke hanya ukuran yang benar-benar digunakan.fsutil
bukan open source, tetapi tidak dikirim dengan Windows dan karena itu tidak ada biaya tambahan. Saya menggunakannya untuk nol ruang kosong pada drive WD 250 GB 7200 RPM kosong (F:
). Inilah yang saya lari dari baris perintah:Yang menunjukkan laporan ini:
Saya menggunakan
Total # of avail free bytes
perintah berikut:Butuh sekitar 4 jam untuk menulis 250GB nol.
sumber
Saya juga telah mencari cara menggunakan Cipher untuk hanya menulis 0x00 kemudian keluar ketika mulai menulis 0xFF ke ruang kosong. Ini akan memungkinkan ruang kosong maksimum dikompresi. Saya telah datang dengan pekerjaan PowerShell dasar berikut
ganti d: \ dengan drive yang diperlukan
Salam Simon
sumber
Jika Anda menggunakan VMware, cara yang jauh lebih baik adalah dengan menggunakan alat yang dibangun dalam VMware untuk mendapatkan kembali ruang yang tidak terpakai pada drive virtual.
Saya menggunakan ini untuk mengurangi ukuran disk virtual dari 28 gigabyte menjadi 13 gigabytes. Jarak tempuh Anda mungkin beragam.
Ketika saya mencoba menggunakan
sdelete -z c:
, itu sebenarnya meningkatkan ukuran drive virtual hingga 30 gigabytes, yang merupakan ukuran maksimumnya.Lihat situs web VMware dan Compact a Virtual Hard Disk , yang ada di bawah
Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks
.Memperbarui
Terkadang, alat GUI tidak cukup dapat diandalkan seperti alat baris perintah. Saya telah mengalami masalah di mana alat GUI gagal, tetapi alat baris perintah berfungsi dengan baik. Berikut adalah opsi untuk
VMware Desktop 10
:Berikut adalah contoh menyusutkan disk. Baris perintah ini berfungsi, meskipun ada perintah yang sama dari GUI yang gagal:
Pesan kesalahan yang dimulai dengan
VizDiskLib
baru untuk VMware Desktop 10 dan dapat diabaikan dengan aman.sumber
Google-up Eraser 5.8.8 32-bit Bekerja dengan baik bahkan pada Windows XP SP3 !
sumber
Mit,
Saya menemukan bahwa skrip PowerShell Simon melakukan apa yang Anda butuhkan, tanpa masalah versi sdelete. (switch melakukan hal yang berbeda di versi yang berbeda)
Ada satu masalah, sandi itu terus berjalan, tetapi saya memperbaikinya.
Saya selanjutnya memodifikasi skrip untuk membersihkan folder temp:
Anda harus mengganti F: \ dengan huruf drive di kedua tempat.
sumber
Mengapa alat pihak ketiga, ketika Windows sudah memasukkan semua yang Anda butuhkan, untuk "gratis" dan secepat mungkin:
1)
format X: /fs:XXXX /p:#
, di manaX
huruf drive;XXXX
adalah sistem file, Yeither dan#
jumlah operan;2)
clean
perintah diskpart : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;Btw, Anda tidak perlu lebih dari satu pass, baik - klaim sebaliknya adalah info usang untuk strategi disk merah / tulis usang, orang mendorong produk, didorong paranoia, atau bs diteruskan sebagai "saran ahli".
Edit: nvm, ketinggalan bagian ruang bebas ...
sumber