Mengapa Terdapat Perbezaan Besar Antara 'Saiz' dan 'Saiz pada Disk'?
Kebanyakan masa, nilai untuk 'Saiz' dan 'Saiz pada cakera' akan sangat dekat dengan padanan semasa memeriksa folder atau saiz fail, tetapi bagaimana jika terdapat percanggahan besar antara kedua-duanya? Siaran Q & A SuperUser hari ini melihat jawapan kepada masalah yang mengelirukan ini.
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca SuperUser thelastblack ingin tahu mengapa terdapat perbezaan besar antara 'Size' dan 'Size on disk' untuk folder pada kad SD telefonnya:
Seperti yang anda dapat lihat di bawah, terdapat banyak perbezaan antara medan 'Saiz' dan 'Saiz pada cakera' untuk folder ini. Kenapa begitu?
Saya tahu bahawa 'Saiz pada cakera' seharusnya sedikit lebih daripada 'Saiz' kerana unit peruntukan di Windows, tetapi mengapa terdapat perbezaan yang besar? Bolehkah ia kerana banyak fail?
BTW, folder ini ada pada kad SD telefon Android saya. Di dalam ini, aplikasi peta saya menyimpan peta cachenya, dan aplikasi mendapat peta dari Google Maps.
Melihat tangkapan skrin, pastinya terdapat perbezaan besar antara 'Size' dan 'Size on disk', jadi apa yang berlaku di sini untuk menyebabkan ini?
Jawapan
Penyumbang SuperUser Bob mempunyai jawapan untuk kami:
Saya akan mengandaikan bahawa anda menggunakan sistem fail FAT / FAT32 di sini, kerana anda menyebutkan ini adalah kad SD. NTFS dan exFAT bertindak sama dengan unit-unit peruntukan. Sistem fail lain mungkin berbeza, tetapi mereka tidak disokong pada Windows pula.
Jika anda mempunyai banyak fail kecil, ini tentunya mungkin. Pertimbangkan ini:
- 50,000 fail
- Saiz kluster 32 KB (unit peruntukan), yang merupakan max untuk FAT32
Ok, sekarang ni minimum ruang yang diambil ialah 50,000 * 32,000 = 1.6 GB (menggunakan awalan SI, bukan binari, untuk memudahkan matematik). Ruang setiap fail yang diambil pada cakera sentiasa berganda saiz unit peruntukan - dan di sini kita mengandaikan setiap fail sebenarnya cukup kecil untuk dimuatkan dalam satu unit, dengan ruang yang dibuang (dibazirkan).
Jika setiap fail purata 2 KB, anda akan mendapat kira-kira 100 MB total - tetapi anda juga membazir 15x itu (30 KB setiap fail) secara purata kerana saiz unit peruntukan.
Penjelasan Dalam-Kedalaman
Kenapa ini berlaku? Nah, sistem fail FAT32 perlu mengesan di mana setiap fail disimpan. Sekiranya ia menyimpan senarai setiap bait, jadual (seperti buku alamat) akan berkembang pada kelajuan yang sama seperti data - dan membazirkan banyak ruang. Jadi apa yang mereka lakukan adalah menggunakan "unit peruntukan", juga dikenali sebagai "saiz kelompok". Jumlahnya dibahagikan kepada unit peruntukan ini, dan sejauh sistem fail berkenaan, mereka tidak boleh dibahagikan - yang merupakan blok terkecil yang dapat diatasi. Sama seperti anda mempunyai nombor rumah, tetapi pos anda tidak peduli berapa banyak bilik tidur yang anda ada atau yang tinggal di dalamnya.
Jadi apa yang berlaku jika anda mempunyai fail yang sangat kecil? Nah, sistem fail tidak peduli jika fail itu adalah 0 KB, 2 KB, atau bahkan 15 KB, ia akan memberi ruang paling sedikit yang boleh - dalam contoh di atas, itu 32 KB. Fail anda hanya menggunakan sedikit ruang ini, dan selebihnya pada asasnya terbuang, tetapi masih tergolong dalam fail - sama seperti bilik tidur yang anda tinggalkan tanpa tempat tinggal.
Mengapa ada saiz unit peruntukan yang berbeza? Nah, ia menjadi pertukaran antara meja yang lebih besar (buku alamat, contohnya mengatakan John memiliki sebuah rumah di 123 Fake Street, 124 Fake Street, 666 Syaitan Lane, dll.), Atau lebih banyak ruang yang terbuang di setiap unit (rumah) . Jika anda mempunyai fail yang lebih besar, lebih masuk akal untuk menggunakan unit peruntukan yang lebih besar - kerana fail tidak mendapat unit baru (rumah) sehingga semua yang lain diisi. Jika anda mempunyai banyak fail kecil, dengan baik, anda akan mempunyai meja besar (buku alamat) juga, jadi mungkin juga memberi mereka unit kecil (rumah).
Unit peruntukan besar, sebagai peraturan umum, akan membazirkan banyak ruang jika anda mempunyai banyak fail kecil. Biasanya tidak ada alasan yang baik untuk pergi melebihi 4 KB untuk penggunaan umum.
Pemecahan?
Bagi pemecahan, pemecahan tidak sepatutnya membuang ruang dengan cara ini. Fail besar boleh dipecah, iaitu berpecah, ke dalam pelbagai unit peruntukan, tetapi setiap unit harus diisi sebelum seterusnya. Defragging mungkin menyimpan sedikit ruang dalam jadual peruntukan, tetapi ini bukan isu khusus anda.
Penyelesaian yang Kemungkinan
Seperti yang dicadangkan oleh gladiator2345, pilihan hanya satu-satunya anda pada masa ini adalah untuk hidup dengannya atau memformat dengan unit peruntukan yang lebih kecil.
Kad anda mungkin diformatkan dalam FAT16, yang mempunyai had yang lebih kecil pada saiz jadual dan oleh itu memerlukan unit peruntukan yang lebih besar untuk menangani jumlah yang lebih besar (dengan had atas 2 GB dengan unit peruntukan 32 KB). Sumber ihsan Braiam. Sekiranya itu berlaku, anda mesti selamat memformat sebagai FAT32 pula.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.