Bagaimana ukuran file pada disk menjadi 0 byte saat ada data di dalamnya?

106

Saya memiliki file di Windows 10 dengan 362 byte data, tetapi "ukuran pada disk" hanya 0 byte. Ini adalah program "Hello world" sederhana yang ditulis dalam kumpulan, dan disimpan di Notepad ++ .

Bagaimana mungkin ukuran pada disk adalah nol ketika ukuran file adalah 362 byte?

Saya memiliki SSD, bukan hard disk normal.

Cuplikan layar dialog Properti:

Cuplikan layar dialog Properti

Coder88
sumber
4
Jawaban singkat: Jika tidak ada ruang tambahan pada disk diperlukan untuk menyimpan kontennya.
David Schwartz
11
@ Thomas Bukan duplikat. Namanya terdengar mirip, tetapi pertanyaan itu menanyakan mengapa Windows menyatakan file nol-byte sebagai ukuran-nol meskipun memerlukan pendaftaran di suatu tempat. Pertanyaan ini menanyakan mengapa ukuran pada disk bisa nol bahkan jika ada data dalam file.
Ben N
@BenN menandai itu tidak pantas karena Anda benar itu pasti bukan duplikat.
William
Hai Coder88, saya yakin orang yang menandai pos Anda sebagai duplikat salah - pertanyaan lain menanyakan sesuatu yang berbeda; Anda benar-benar mengajukan pertanyaan yang bagus. Jika Anda bermaksud menunjukkan bahwa pertanyaan Anda telah terpecahkan, Anda dapat mengklik tanda centang di sebelah jawaban di sini.
Ben N

Jawaban:

155

Ini terjadi jika file tersebut sangat kecil sehingga isinya dan pembukuan sistem file pas di 1KB. Untuk menghemat ruang disk, NTFS menyimpan file kecil "resident", menyimpan kontennya tepat di catatan file, jadi tidak ada cluster yang harus dialokasikan untuk itu. Oleh karena itu, ukuran pada disk adalah nol karena tidak ada yang melebihi catatan file. Setelah file menjadi cukup besar, NTFS menjadikannya "nonresiden", mengalokasikan satu atau lebih cluster untuk itu (membuat nol "ukuran pada disk"), dan membuat "pasangan pemetaan" dalam catatan file di tempat data untuk arahkan ke cluster.

Hard drive SSD atau Windows 10 tidak memengaruhi ini; ini hanyalah fitur NTFS. Bacaan lebih lanjut: Empat Tahapan Pertumbuhan File NTFS .

Perhatikan bahwa metrik "ukuran pada disk" tidak sepenuhnya benar. Misalnya, tidak pernah menyertakan konstanta 1KB yang diambil oleh catatan file NTFS. Metrik diperkenalkan di Windows 95, yang tidak menggunakan NTFS dan karenanya tidak bisa menjelaskan fenomena ini; itu hanya menunjukkan ukuran file dibulatkan ke kelipatan berikutnya dari ukuran cluster. Algoritma estimasi itu dibawa ke Windows 7, meskipun banyak versi Windows di antara mereka menggunakan NTFS dan penyimpanan penduduk. Akhirnya diperbarui di Windows 8 untuk menghitung file dengan hanya data penduduk sebagai ukuran nol pada disk. Bacaan lebih lanjut: Hanya Apa 'Ukuran di Disk'?

Ben N
sumber
1
Sejenak saya pikir kami sedang melihat efek Deduplikasi Data ( blog.fosketts.net/2012/01/03/... ) tapi saya percaya bahwa fitur berfungsi pada level transparan untuk sesuatu seperti metrik "ukuran pada disk".
misha256
8
Tapi tunggu ... Saya tidak bisa meniru perilaku OP pada volume NTFS saya (Windows 7). Terlepas dari cara saya membuat file kecil (beberapa hanya satu byte panjang), mereka masing-masing menempati 4KB "ruang disk" sesuai dengan dialog File Properties. Hmm ...
misha256
8
@ misha256 Huh, saya dapat mereproduksi dengan file di bawah ~ 700 byte pada Windows 8.1. Dugaan saya adalah bahwa algoritma menjadi lebih pintar di suatu tempat antara Windows 7 dan 8.1, karena pada awalnya, tidak tahu tentang hal-hal NTFS ( sumber ) mewah. Perhatikan bahwa sekali file masuk ke tahap kedua, itu tidak pernah menyusut kembali.
Ben N
6
@ Pilip Saya kira orang bisa berdebat baik cara. Secara tradisional, "file pada disk" adalah "ukuran cluster yang dialokasikan" (jadi, misalnya, Anda bisa melihat efek dari memilih ukuran cluster yang terlalu besar). Sepengetahuan saya, tidak pernah termasuk ruang "katalog" yang dibutuhkan oleh sistem file (misalnya ukuran "entri direktori" atau "panjang rantai entri FAT").
TripeHound
3
@ Pilip: Pokoknya, termasuk pembukuan dalam ukuran file menjadi cepat: Bagaimana Anda menggambarkan file 1-cluster dengan 3 nama?
Deduplicator