Berapa banyak ruang yang dikonsumsi direktori?


13

Berapa banyak ruang kosong yang diambil oleh direktori?

Dalam sistem file Windows dan NTFS dikatakan '0 byte' yang tidak mungkin.

Berapa banyak yang benar-benar diambil oleh direktori? Apakah ini tergantung pada sistem file atau sistem operasi?


1
Secara teknis apa yang ditampilkan Jendela Properties adalah isi folder, yang jika kosong menempati 0 byte pada disk apa pun. Pertanyaan Anda berkaitan dengan ruang apa yang ditempati struktur folder pada sistem file. Ini jelas tergantung pada sistem file. Pada FAT32, satu-satunya hal yang perlu Anda simpan adalah beberapa bendera (tersembunyi, diarsipkan) dan nama serta jalurnya. Di NTFS Anda juga perlu menyimpan izin dan beberapa hal lagi. Secara keseluruhan, ruang itu hampir dapat diabaikan.
Doktoro Reichard

Jadi, pada NTFS, berapa banyak ruang yang dibutuhkan diractory kosong? mis. jika saya membuat 1 miliar direktori, berapa banyak ruang ini?
ShadowHero

Seperti yang saya katakan, tergantung pada jalur nama dan folder. Dengan asumsi Anda menggunakan semua 26 karakter, dengan 1 miliar nama unik Anda dapat memiliki sekitar 7 nama folder panjang karakter. Jadi, 7 Bytes * 1.000.000.000 sama dengan sekitar 7GB ruang. Ini minimum, saya kira. Saya pikir saya memiliki sekitar 1 juta folder di semua drive saya sehingga nilainya bahkan tidak tercapai. Jangan lupa ini perkiraan yang sangat kasar.
Doktoro Reichard

Keren, saya mengerti ... bagaimana izin disimpan?
ShadowHero

1
@AthomSfere Hmm ... itu berarti folder tidak dapat menyimpan izin pengguna tanpa batas, kecuali beberapa catatan MFT dapat ditetapkan. Akan mencoba mencarinya.
Doktoro Reichard

Jawaban:


16

Secara teknis apa yang ditampilkan Jendela Properties kepada Anda adalah isi folder, yang jika kosong menempati 0 byte pada disk apa pun.

Pertanyaan Anda berkaitan dengan ruang apa yang ditempati struktur folder pada sistem file, yang jelas tergantung padanya. Pada FAT32, satu-satunya hal yang perlu Anda simpan adalah beberapa bendera (tersembunyi, diarsipkan) dan nama serta jalurnya. Di NTFS Anda juga perlu menyimpan izin dan beberapa hal lagi. Secara keseluruhan, ruang itu hampir dapat diabaikan.

Ruang yang ditempati struktur direktori kosong bergantung pada jalur nama dan folder. Sebagai contoh, anggap Anda menempatkan semua folder pada drive root (katakanlah C :) dan gunakan semua 26 karakter alfabet; dengan 1 miliar nama unik, Anda dapat memiliki log_26 (1.000.000.000) = sekitar 7 (6.3065) nama folder panjang karakter. Jadi, 7 Bytes * 1.000.000.000 sama dengan sekitar 7GB ruang.

Ini minimum berdasarkan hanya pada jumlah nama ruang yang harus diambil pada struktur apa pun. Seperti yang akan ditampilkan, filesystem menyimpan lebih banyak informasi selain nama file pada struktur file-nya.

Saya pikir saya memiliki sekitar 1 juta folder dan file di semua drive saya sehingga nilainya bahkan tidak tercapai. Jangan lupa ini perkiraan yang sangat kasar.


Sistem file yang paling banyak digunakan saat ini dapat dianggap (bisa dibilang) sebagai FAT (File Allocation Table) dan NTFS (New Technology File System). FAT seperti yang kita tahu telah digunakan sejak tahun 1996, ketika Windows 95 dirilis dengan FAT32. Meskipun digantikan oleh sistem file lain yang lebih tangguh, seperti NFTS (Windows), HFS + (OSX) atau ext3 (Linux), masih banyak digunakan di perangkat genggam atau kartu memori atau flash drive, karena didukung dengan baik oleh sebagian besar OS dan di atas semua itu sederhana.

Sekarang untuk yang penting. File dan direktori dalam partisi FAT, bahkan jika tidak ada di dalamnya, memiliki nama, lokasi, atribut tertentu, dan sebagainya, yang disimpan dalam zona yang disebut tabel direktori .

The tabel direktori adalah file khusus (yaitu tersembunyi dari penggunaan biasa, sehingga hanya OS dan aplikasi tertentu dapat langsung mengaksesnya). Ini mewakili direktori (alias folder) dan setiap file atau folder yang tersimpan di dalamnya memiliki entri 32 Byte dalam tabel. Karena tabel direktori adalah file, maka ia akan menempati satu atau lebih kelompok (yaitu kotak dengan ukuran yang telah ditetapkan dalam disk, di mana hanya satu file (atau bagian dari satu) yang cocok).

Jadi, folder atau direktori apa pun, pada drive modern (> 512 MB), memiliki setidaknya overhead sebesar 4 KB, sehingga dapat menyimpan tabel (sumber) . Namun, ini berarti Anda dapat menyimpan 128 file berbeda (4 * 1024 B / 32 B = 128) pada folder yang sama dan overhead dalam menyimpan catatan masih 4KB yang sama seperti sebelumnya.

Membonceng pada contoh pertama, ini berarti bahwa satu miliar folder akan memiliki overhead 32 GB, daripada perkiraan sekitar 7 GB yang saya hitung. 32 GB ini menyimpan tidak hanya nama pendek (8 karakter ASCII), tetapi atribut, bendera, akses, tanggal pembuatan dan modifikasi dan atribut warisan lainnya.

Dengan asumsi Anda membaca semua ini, mungkin ada pertanyaan yang mungkin Anda miliki: "Yah ini semua baik dan bagus tapi bagaimana nama panjang, seperti Wabbajack atau bahkan nama hash seperti e4d909c290d0fb1ca068ffaddf22cbd0 , disimpan?"

Microsoft pada Windows 95 memutuskan untuk menambahkan fitur itu untuk meningkatkan pengalaman pengguna. Untuk menghindari kerusakan sistem "hampir-standar", mereka menggunakan solusi yang rapi yang disebut VFAT (Virtual FAT). Pada dasarnya agar sesuai dengan nama file yang panjang ke dalam file, catatan tambahan ditulis sebelum catatan file yang sebenarnya (dengan beberapa atribut khusus yang tidak dapat dilihat oleh sistem sebelumnya). Sistem nama file yang panjang memungkinkan panjang maksimum 255 karakter (sumber) Unicode (16 ) (sumber) (sumber) .

Jika Anda mengubah contoh pertama sehingga setiap folder memiliki 9 karakter, maka overhead akan berlipat ganda dari 32 GB menjadi 64 GB, karena satu catatan lagi perlu ditulis untuk menyimpan nama panjang.


Menurut Wikipedia artikel tentang NTFS, semua izin disimpan di Tabel File Master. Ruangnya dapat dilihat dengan jelas melalui Disk Defragmenter, seperti yang ditunjukkan di sini .

Ukuran catatan MFT menempati dari folder atau file, dijelaskan di sini :

Catatan file dan folder masing-masing 1 KB - dan disimpan dalam MFT, atributnya ditulis ke ruang yang dialokasikan di MFT. Selain atribut file, setiap record file berisi informasi tentang posisi record file dalam MFT.

Ketika atribut file dapat masuk dalam catatan file MFT untuk file itu, mereka disebut atribut penduduk. Atribut seperti nama file dan stempel waktu selalu ada. Ketika jumlah informasi untuk file tidak sesuai dengan catatan file MFT, beberapa atribut file menjadi bukan penduduk . Atribut nonresiden dialokasikan satu atau lebih kelompok ruang disk . Sebagian atribut nonresiden tetap di MFT dan menunjuk ke kluster eksternal. NTFS membuat atribut Daftar Atribut untuk menggambarkan lokasi semua catatan atribut. Tabel Jenis Atribut File NTFS mencantumkan atribut file yang saat ini ditentukan oleh NTFS.

Jadi, dalam NTFS, folder menempati setidaknya 1 KB ruang, kecuali mereka memiliki argumen yang sangat panjang dan daftar izin; pada saat itu, catatan MFT menempati kluster tambahan di partisi, yang ukurannya tergantung pada bagaimana itu diformat, meskipun untuk lebih dari 2GB Microsoft dalam posting merekomendasikan kluster 4KB.


1
Saya menemukan beberapa informasi tentang panjang 1024 Byte yang saya sebutkan sebelumnya, c-ad.bnl.gov/kinyip/windows/MFT.html Ini adalah bacaan yang sangat bagus dan mungkin menguntungkan jawaban Anda jika Anda ingin memperluas.
Austin T French

Saya ingin memperluas (untuk membuat ini jawaban yang lebih lengkap, tanpa ini terlalu teknis ...) walaupun saya harus meninggalkan ini untuk besok. Terima kasih untuk sumbernya.
Doktoro Reichard

Koreksi teknis: tidak ada batasan 255 jalur. Sebaliknya, ada batas MAX_PATH 260 karakter untuk jalur standar, dan kemudian ada jalur panjang diperpanjang dari 32.767 karakter (ya, lebih dari 32 ribu karakter) untuk jalur unicode sejati (menggunakan indikator `\\?`, Baik sebagai jalur panjang-panjang biasa, atau sebagai jalur UNC). Lihat docs.microsoft.com/en-us/windows/win32/fileio/… untuk rincian lebih lanjut tentang ini.
Mike 'Pomax' Kamermans

3

Sebagai contoh dunia nyata, saya baru saja merekam ruang kosong saya, lalu saya membuat struktur direktori besar dan mengurangi yang baru gratis untuk menemukan berapa banyak ruang yang digunakan. Saya membuat direktori 0-6 untuk setiap hari dalam seminggu, lalu di dalam direktori 0-23 untuk jam sehari, kemudian 0-59 untuk menit dalam satu jam. Secara total 10.080 direktori. Penggunaan disk saya diubah oleh 6.926.336 byte. Itu bekerja hingga 687 byte per direktori. Jika Anda peduli, itu juga bekerja pada 0,0006% dari drive 1TB (jika Anda menghitung 1TB sebagai 1024 ^ 4).


3
Bisakah Anda menambahkan sistem file ke jawaban Anda? Nama direktori semuanya singkat?
fixer1234

0

Pada Windows 10 saya membuat 1.000.000 folder kosong dan, menurut getsizefungsi python , dibutuhkan ruang 200540160 byte. Itu rata-rata 200,54016 byte per folder.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.