Mengapa defragmenting drive C meningkatkan ruang disk saya sebesar 10 GB?

27

Saya menggunakan Defraggler untuk mendefrag ruang kosong pada 100 GB C: \ drive saya yang penuh 85 GB. Setelah defragmentasi, drive hanya menampilkan 75 GB penuh. Bagaimana 10 GB ruang kosong muncul secara ajaib? Apakah saya kehilangan data?

Saya melakukan pembersihan disk sebelum defragmenting dan sampah saya hanya sekitar 11 MB, jadi tidak mungkin karena membersihkan file sementara. Perhatikan bahwa saya mendefrag "ruang kosong" yang berarti harus mengatur ulang blok kosong agar berdekatan.

goweon
sumber
1
Mungkin interaksi dengan salinan bayangan: lihat misalnya ( piriform.com/docs/defraggler/technical-information/… )
horatio
2
Juga, Defraggler memiliki opsi untuk mengosongkan tempat sampah sebelum defragmenting.
oKtosiTe

Jawaban:

14

Apa yang mungkin terjadi adalah bahwa operasi defrag memaksa Windows untuk membuang beberapa snapshot pemulihan sistem. Ini akan menjadi kasus patologis fragmentasi yang menyebabkan metadata overhead menjadi 10% penuh dari ruang drive Anda di atas apa yang biasanya digunakan Windows. meski begitu, saya tidak yakin itu mungkin.

Saya tidak melihat apa pun dalam riwayat versi Defraggler atau dokumentasi yang menunjukkan bahwa ia dapat mendefrag file dengan benar untuk mencegah pembersihan salinan bayangan. Sebenarnya, utas ini dari forum dukungan Defraggler menunjukkan bahwa mereka tahu itu sedang terjadi (ada posting dari admin dewan yang diberi label "Pejabat Bug Piriform Resmi" di utas) tetapi tidak menunjukkan apakah mereka akan memperbaikinya atau tidak.

Salinan bayangan mungkin hilang ketika Anda mendefragmen volume : Alasan ini terjadi adalah bahwa secara default, VSS beroperasi dengan 16 kluster KB secara default, sementara sebagian besar volume NTFS diformat dengan 4 kluster KB. Jadi jika operasi defrag memindahkan data yang bukan kelipatan dari kluster 16 KB (atau "jarak" yang dipindahkan bukan kelipatan 16 KB), maka VSS akan melacaknya sebagai perubahan dan mungkin membersihkan semua Anda snapshot.

MSDN: Defragmentasi File :

Jika memungkinkan, pindahkan data dalam blok yang disejajarkan relatif satu sama lain dalam peningkatan 16-kilobyte (KB). Ini mengurangi overhead copy-on-write ketika salinan bayangan diaktifkan, karena ruang salinan bayangan ditingkatkan dan kinerja berkurang ketika kondisi berikut terjadi:

  • Ukuran blok permintaan pindahan kurang dari atau sama dengan 16 KB.
  • Delta langkah tidak dalam peningkatan 16 KB.

Vista built in defrag tidak melakukan ini :

Satu perubahan yang tidak jelas bagi pengguna adalah pengoptimalan salinan bayangan kami selama defragmentasi. Defrag memiliki heuristik khusus untuk memindahkan blok file dengan cara yang akan meminimalkan aktivitas copy-on-write dan konsumsi area penyimpanan shadow copy. Tanpa optimasi ini, proses defragmentasi akan mempercepat penghapusan salinan bayangan yang lebih lama.

afrazier
sumber
Saya tidak tahu tentang snapshot bagian dari jawaban ini, tetapi saya tidak yakin bahwa defrag membebaskan ruang. Bisakah defrag mengosongkan Recycle Bin Anda? Pada sistem file yang tidak menggabungkan file kecil ke dalam satu cluster, saya tidak bisa melihat bagaimana defragmenting akan menghasilkan peningkatan ruang seperti itu. Saya bisa membayangkan Anda memiliki 10G ruang yang tersedia di blok kecil sehingga Windows tidak menghitungnya, tapi saya belum pernah mendengar perilaku itu sebelumnya.
Slartibartfast
@ Slartibartfast: Ini masalah jika aplikasi tidak ditulis dengan benar. Saya akan memperbarui jawaban saya dengan lebih banyak bukti, sekarang saya tidak ada di ponsel saya. :-)
afrazier
@afrazier - walaupun saya pikir jawaban ThouArtNotDoc ​​yang diperbarui adalah jawaban umum yang lebih baik. Saya harus setuju bahwa salinan bayangan mungkin memainkan peran dalam situasi OP. Saya juga menemukan ini: "Jika Anda berencana untuk mendefragmen volume di mana salinan bayangan diaktifkan, disarankan agar Anda menggunakan cluster (atau unit alokasi) ukuran 16 KB atau lebih besar. Jika tidak, jumlah perubahan yang disebabkan oleh proses defragmentasi dapat menyebabkan salinan bayangan dihapus lebih cepat dari yang diharapkan. " - MS: "Merancang Shadow Copy Strategi" technet.microsoft.com/en-us/library/cc728305(WS.10).aspx
Ƭᴇcʜιᴇ007
@afrazier: Dikonfirmasi. Semua titik pemulihan sistem sebelumnya hilang. Dalam konfigurasi, saya menetapkan 12% sebagai ruang maksimum yang diizinkan untuk salinan bayangan, jadi 10 GB tidak masuk akal. Di sisi lain, saya baru saja menginstal game 9 GB, yang bisa saja menimpa titik pemulihan sebelumnya.
goweon
@firebat: Ruang yang digunakan oleh Pemulihan Sistem adalah untuk melacak perubahan pada file (snapshotted) yang ada, bukan yang baru. Memasang gim baru tidak akan memengaruhi ruang pemulihan sistem, tetapi tambalan besar bisa.
Afrazier
23

Setiap fragmen harus dilacak di suatu tempat. Itu membutuhkan ruang penyimpanan (dalam pipa sistem File, bukan barang yang seharusnya Anda akses langsung).

Contoh: Misalkan Anda memiliki satu file dengan 1000 fragmen. Dengan demikian file Anda disimpan melalui kumpulan blok acak .. Daripada dalam satu blok berkelanjutan. Ini berarti file terfragmentasi membutuhkan 1000x lebih banyak ruang penyimpanan dalam pipa sistem file, jika hanya untuk menyimpan alamat untuk setiap fragmen. Plumbing sistem file menyimpan kamus kecil / basis data / peta / tabel / daftar ke lokasi setiap fragmen file. Jadi, untuk sistem file plumbing, menyimpan daftar pointer fragmen tunggal tidak membutuhkan banyak ruang, dibandingkan dengan daftar 1000 fragmen pointer ..

Tapi hei, mungkin aku salah ...

Sunting: Informasi pendukung dari sini :

Ketika aliran data non-residen terlalu banyak terfragmentasi, sehingga peta alokasi efektifnya tidak dapat sepenuhnya masuk dalam catatan MFT, peta alokasi dapat juga disimpan sebagai aliran non-residen, dengan hanya aliran residen kecil yang berisi alokasi tidak langsung memetakan ke peta alokasi non-residen yang efektif dari aliran data non-residen.

Terjemahan: Jika Anda memiliki fragmentasi berat, asumsi kasus umum dari pemipaan sistem file tidak akan berlaku. Dengan demikian, FS harus mengambil langkah-langkah untuk mengakomodasi fragmentasi dan berakhir dengan biaya ruang penyimpanan tambahan, hanya untuk mengelola fragmen. Dugaan saya tepat dari tempat pertama.


Sunting: Mengingat hal di atas, sepertinya 10GB hilang hanya karena fragmentasi file gila. Saya bertaruh bahwa saat defragging, Anda memiliki beberapa korupsi sistem file umum yang diperbaiki secara otomatis. Saya pikir Anda tidak hanya memiliki fragmentasi yang besar, tetapi juga sebagian file yang terhapus yang mengambil ruang penyimpanan. Pasti menyenangkan untuk melihat log scandisk dari defrag itu (atau menjalankan scandisk sebelum defrag)

James T Snell
sumber
3
PS - itu pasti beberapa fragmentasi hardcore.
James T Snell
Saya tidak tahu apakah itu alasan yang sah untuk peningkatan konsumsi penyimpanan setelah defragmentasi. Tapi saya sudah memperhatikan ini berkali-kali, Jika Anda memiliki titik pemulihan sistem yang cukup lama (umumnya tidak terjadi jika Anda secara teratur menjalankan utilitas pembersihan disk), dan kemudian Anda defragment setelah banyak data dikumpulkan pada drive C, konsumsi memori meningkat entah dari mana, tetapi jika Anda menghapus titik pemulihan itu, ia membersihkan penyimpanan yang ditempati itu. Yah itu secara teknis, mungkin tidak masuk akal, tetapi terjadi pada saya berkali-kali, karena lembur, mengembalikan poin mengambil memori.
Kushal
Entahlah, 10G sepertinya banyak, tetapi IME, disk yang sangat penuh cenderung memecah jauh lebih cepat daripada disk yang kurang terfragmentasi. Jika dia berada di> 85% sebelumnya (karena dia probs berarti 85GiB tetapi 100GB disk), dan mungkin lebih penuh sementara itu, dia bisa memiliki fragmentasi yang sangat tinggi, dan kinerja mengerikan yang menyertainya.
Bernd Haug
3
Kecuali jika pemblokiran pada volume itu sangat tinggi, saya pribadi tidak percaya pada 10GB ruang yang dibebaskan hanya dengan tidak melacak fragmen. Dengan ukuran blok 4096k dan dengan asumsi setiap fragmen memerlukan blok penuh hanya untuk melacak (yang salah), itu akan membutuhkan 2,5 juta fragmen yang sebelumnya dilacak tetapi tidak lagi untuk membebaskan ruang sebanyak itu.
CarlF
1
@ Doc - pointer tidak akan mengambil seluruh blok. Jika (seperti yang mungkin) setiap blok alokasi adalah banyak sektor, Anda memerlukan lebih sedikit pointer karena ada lebih sedikit blok untuk melacak data Anda - sehingga overhead maksimum yang mungkin untuk melacak semua fragmen akan jauh lebih kecil dari 3%. Saya tidak tahu detail pasti dari NTFS, tetapi dengan sistem pengarsipan FAT (yang relatif tidak efisien), Anda masih tidak bisa mendapatkan overhead 10% untuk Tabel Alokasi File (pointer-pelacakan fragmen) yang diberi nama FAT.
Steve314