Dizinler ne kadar yer kaplar?


13

Boş dizinlerin alanı ne kadar?

Windows ve NTFS dosya sisteminde imkansız olan '0 bayt' der.

Bir dizin gerçekten ne kadar alıyor? Dosya sistemine veya işletim sistemine bağlı mı?


1
Teknik olarak Özellikler Penceresinin size gösterdiği, klasörün içeriği olup, boşsa herhangi bir diskte 0 bayt yer alır. Sorunuz, klasör yapısının bir dosya sisteminde hangi alanı kapladığıyla ilgilidir. Belli ki dosya sistemine bağımlı. FAT32'de saklamanız gereken tek şey bazı bayraklar (gizli, arşivlenmiş) ve isim ve yol. NTFS'de de izinleri ve daha fazlasını saklamanız gerekir. Sonuçta, bu alan ihmal edilebilir.
Doktoro Reichard

Peki, NTFS'de boş bir diractory ne kadar yer kaplıyor? örneğin 1 milyar dizin oluşturursam, bu ne kadar alan?
ShadowHero

Dediğim gibi, isim ve klasör yoluna bağlıdır. 26 karakterin tümünü kullandığınızı varsayarsak, 1 milyar benzersiz adla yaklaşık 7 karakter uzunluğunda klasör adınız olabilir. Yani, 7 Bayt * 1.000.000.000 kabaca 7GB alana eşittir. Bu bir minimum, sanırım. Bence tüm sürücülerimde yaklaşık 1 milyon klasör var. Unutmayın ki bu çok kaba bir tahmindir.
Doktoro Reichard

Harika, görüyorum ... izinler nasıl saklanıyor?
ShadowHero

1
@AthomSfere Hmm ... Bu, birden fazla MFT kaydı atanamadığı sürece klasörlerin sonsuz kullanıcı izinlerini depolayamayacağı anlamına gelir. Aramaya çalışacağım.
Doktoro Reichard

Yanıtlar:


16

Teknik olarak Özellikler Penceresinin size gösterdiği, klasörün içeriği olup, boşsa herhangi bir diskte 0 bayt yer alır.

Sorunuz, klasör yapısının bir dosya sisteminde ne kadar yer kapladığı ile ilgilidir, ki bu açıkça ona bağlıdır. FAT32'de saklamanız gereken tek şey bazı bayraklar (gizli, arşivlenmiş) ve isim ve yol. NTFS'de de izinleri ve daha fazlasını saklamanız gerekir. Sonuçta, bu alan ihmal edilebilir.

Boş bir dizin yapısının kapladığı alan, ada ve klasör yoluna bağlıdır. Örnek olarak, tüm klasörleri bir kök sürücüye yerleştirdiğinizi varsayın (örneğin C :) ve 26 alfabetik karakterin tümünü kullanın; 1 milyar benzersiz adla log_26 (1.000.000.000) = yaklaşık 7 (6.3065) karakter uzunluğunda klasör adına sahip olabilirsiniz. Yani, 7 Bayt * 1.000.000.000 kabaca 7GB alana eşittir.

Bu yalnızca minimum yapı adlarının herhangi bir yapıda alması gereken miktara dayalıdır. Gösterileceği gibi, dosya sistemleri dosya yapısında dosya adı dışında çok daha fazla bilgi depolar.

Tüm sürücülerimde yaklaşık 1 milyon klasör ve dosyam olduğunu düşünüyorum, böylece değere gerçekte bile ulaşılamıyor. Unutmayın ki bu çok kaba bir tahmindir.


Şu anda en çok kullanılan dosya sistemleri (tartışmalı olarak) FAT (Dosya Ayırma Tablosu) ve NTFS (Yeni Teknoloji Dosya Sistemi) olarak düşünülebilir. Bildiğimiz gibi FAT , Windows 95'in FAT32 ile piyasaya sürüldüğü 1996'dan beri kullanılmaktadır. NFTS (Windows), HFS + (OSX) veya ext3 (Linux) gibi daha esnek dosya sistemleri ile değiştirilmesine rağmen, çoğu işletim sistemi tarafından iyi desteklendiği için hala elde taşınır cihazlarda veya bellek kartlarında veya flash sürücülerde yaygın olarak kullanılmaktadır. ve hepsinden önemlisi, basit.

Şimdi önemli olan için. FAT bölümündeki dosyalar ve dizinler, içinde hiçbir şey olmasa bile, dizin tablosu adı verilen bir bölgede depolanan bir ada, konuma, belirli özniteliklere vb. Sahiptir .

Dizin tablosu özel bir dosyadır (yani sadece işletim sistemi ve belirli uygulamalar bunu doğrudan erişebileceğiniz şekilde, düzenli kullanım gizlenir). Bir dizini (klasör olarak da bilinir) ve içinde depolanan herhangi bir dosya veya klasörün tabloda 32 Byte girişi vardır. Olarak dizin tablosu bir dosya, daha sonra bir veya daha fazla küme kaplar (bir disk içinde önceden belirlenmiş bir boyutta, yani kutu burada sadece tek bir dosya (veya birinin bir parçası) uyan).

Bu nedenle, modern bir sürücüdeki (> 512 MB) herhangi bir klasör veya dizin, tabloyu (kaynak) depolamak için en az 4 KB ek yüke sahiptir . Ancak bu, aynı klasörde 128 farklı dosya (4 * 1024 B / 32 B = 128) depolayabileceğiniz ve kayıtların saklanması yükünün hala eskisi gibi 4KB olduğu anlamına gelir.

İlk örnekte bindirme, bu milyar klasörlerin yaklaşık 7 GB hesapladığımdan ziyade 32 GB'lık bir ek yüke sahip olacağı anlamına gelir. Bu 32 GB yalnızca kısa adı (8 ASCII karakteri) değil, nitelikleri, bayrakları, erişimi, oluşturma ve değiştirme tarihlerini ve diğer eski nitelikleri de saklar.

Bütün bunları okumak varsayarsak, orada olabilecek bir soru olabilir: "Aslında tüm iyi ve güzel ama nasıl gibi uzun isimleri verilmektedir Wabbajack gibi bile hashy isimleri veya e4d909c290d0fb1ca068ffaddf22cbd0 , depolanan?"

Windows 95'teki Microsoft, kullanıcı deneyimini geliştirmek için bu özelliği eklemeye karar verdi. "Standartlara yakın" bir sistemi kırmamak için VFAT (Sanal FAT) adı verilen temiz bir geçici çözüm kullandılar. Esasen uzun dosya adını dosyaya sığdırmak için, gerçek dosya kaydından önce ek kayıtlar yazılmıştır (bazı özel öznitelikler önceki sistemler tarafından görülmeyecek şekilde). Uzun dosya adı sistemi maksimum 255 UTF-16 (Unicode) karakter (kaynak) (kaynak) uzunluğuna izin verir .

İlk örneği, her klasörde 9 karakter olacak şekilde değiştirirseniz, uzun adı depolamak için bir kayıt daha yazılması gerektiğinden, ek yük 32 GB'tan 64 GB'ye iki katına çıkacaktır.


NTFS hakkındaki Wikipedia makalesine göre , tüm izinler Ana Dosya Tablosunda depolanır. Alanı, burada gösterildiği gibi Disk Birleştiricisi aracılığıyla açıkça görülebilir .

Bir MFT kaydının bir klasör veya dosyadan kapladığı boyut burada açıklanmaktadır :

Dosya ve klasör kayıtları her biri 1 KB'dir ve öznitelikleri MFT'deki ayrılan alana yazılan MFT'de depolanır. Dosya özniteliklerinin yanı sıra, her dosya kaydı MFT'deki dosya kaydının konumu hakkında bilgi içerir.

Bir dosyanın öznitelikleri o dosya için MFT dosya kaydına sığabiliyorsa, bunlara yerleşik öznitelikler denir. Dosya adı ve zaman damgası gibi öznitelikler her zaman yerleşiktir. Bir dosya için bilgi miktarı MFT dosya kaydına sığmadığında , bazı dosya öznitelikleri yerleşik olmaz . Yerleşik olmayan özniteliklere bir veya daha fazla disk alanı kümesi atanır . Yerleşik olmayan özelliğin bir kısmı MFT'de kalır ve harici kümeleri işaret eder. NTFS, tüm öznitelik kayıtlarının konumunu açıklamak için Öznitelik Listesi özniteliğini oluşturur. NTFS Dosya Özniteliği Türleri tablosu, şu anda NTFS tarafından tanımlanan dosya özniteliklerini listeler.

Bu nedenle, NTFS'de, çok uzun argüman ve izin listeleri olmadıkça, klasörler en az 1 KB alan kaplar; bu noktada, MFT kaydı, boyutunda nasıl biçimlendirildiğine bağlı olarak ek bir küme kaplar, ancak bu yazıdaki 2GB'tan fazla Microsoft için 4KB kümeleri önerir.


1
Daha önce bahsettiğim 1024 bayt uzunluğu hakkında bazı bilgiler buldum, c-ad.bnl.gov/kinyip/windows/MFT.html Çok iyi bir okuma ve genişletmeyi önemsiyorsanız yanıtınıza fayda sağlayabilir.
Austin T French

Bunu yarın için bırakmak zorunda kalsam da (bu çok teknik olmadan ... daha eksiksiz bir cevap vermek için) genişletmek istiyorum. Yine de bu kaynak için teşekkürler.
Doktoro Reichard

Teknik düzeltme: 255 yol sınırı yoktur. Bunun yerine, standart yollar için 260 karakterlik MAX_PATH sınırı vardır ve daha sonra gerçek unicode yollar için 32.767 karakterlik (evet, 32 bin karakterden fazla) uzatılmış uzunluk yolu vardır ( `\\? 'Göstergesini kullanarak, düz genişletilmiş yol veya UNC yolu olarak). Bununla ilgili daha fazla bilgi için docs.microsoft.com/en-us/windows/win32/fileio/… adresine bakın .
Mike 'Pomax' Kamermans

3

Gerçek bir dünya örneği için, boş alanımı yeni kaydettim, sonra büyük bir dizin yapısı oluşturdum ve ne kadar alan kullanıldığını bulmak için yeni boş alanı çıkardım. Haftanın her günü için 0-6 arası dizinler, sonra günün saatleri için 0-23 arası dizinler, daha sonra saatin dakikaları için 0-59 arası dizinler oluşturdum. Toplamda 10.080 dizin. Disk kullanımım 6.926.336 bayt olarak değişti. Bu, dizin başına 687 bayta kadar çalışır. İlgilenmeniz durumunda, bu 1 TB'lık bir sürücünün% 0.0006'sına kadar çalışır (1 TB'ı 1024 ^ 4 olarak hesaplarsanız).


3
Yanıtınıza dosya sistemini ekleyebilir misiniz? Dizin adlarının hepsi kısaydı?
fixer1234

0

Windows 10'da 1.000.000 boş klasör oluşturdum ve getsizepython'un işlevine göre 200540160 bayt yer kapladı. Bu, klasör başına ortalama 200.54016 bayttır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.