Azure NetApp Files'da dizin boyutlarını anlama
Dizinde bir dosya oluşturulduğunda, Azure NetApp Files birimindeki gizli dizin dosyasına bir girdi eklenir. Bu dizin dosyası, bir dizindeki mevcut inod'ların izlenmesine yardımcı olur ve çok sayıda dosyaya sahip dizinler için arama isteklerini hızlandırmaya yardımcı olur. Bu dosyaya girdiler eklendikçe, dosya adının uzunluğuna bağlı olarak, dosya boyutu girdi başına yaklaşık 512 bayt hızında artar (ancak asla azalmaz). Daha uzun dosya adları dosyaya daha fazla boyut ekler. Sembolik bağlantılar da bu dosyaya girdiler ekler. Bu kavram, tüm Linux tabanlı dosya sistemlerinde ortak bir öğe olan dizin boyutu olarak bilinir. Dizin boyutu, tek bir Azure NetApp Files birimindeki toplam dosya sayısı üst sınırı değildir. Bu değer tarafından maxfiles
belirlenir.
Varsayılan olarak, yeni bir dizin oluşturulduğunda 4 KiB (4.096 bayt) veya sekiz 512 bayt blok tüketir. Stat komutunu kullanarak linux istemcisinden yeni oluşturulan dizinin boyutunu görüntüleyebilirsiniz.
# mkdir dirsize
# stat dirsize
File: ‘dirsize’
Size: 4096 Blocks: 8 IO Block: 32768 directory
Dizin boyutları tek bir dizine özeldir ve boyutları birleştirmez. Örneğin, bir birimde 10 dizin varsa, her bir dizin tek birimde 320-MiB dizin boyutu sınırına yaklaşabilir.
Bir dizinin sınır boyutuna yaklaşmakta olup olmadığını belirleme
320-MiB dizini için blok sayısı 655360'tır ve her blok boyutu 512 bayttır. (Yani, 320x1024x1024/512.) Bu sayı, 320 MiB dizin için en fazla yaklaşık 4-5 milyon dosyaya çevrilir. Ancak, dizinde ASCII olmayan karakterlerin bulunduğu dosya sayısı gibi faktörlere bağlı olarak en fazla dosya sayısı daha düşük olabilir.
Bir dizinin dizin meta verileri için boyut üst sınırına (320 MB) yaklaşıp yaklaşmadığını görmek için istemciden komutunu kullanabilirsiniz stat
. Azure NetApp Files için tek bir dizin için boyut üst sınırına ulaşırsanız hata No space left on device
oluşur.
320 MB'lık bir dizin için blok sayısı 655.360'tır ve her blok boyutu 512 bayttır. (Yani, 320x1024x1024/512.) Bu sayı, 320 MB'lık bir dizin için en fazla yaklaşık 4 milyon dosyaya çevrilir. Ancak, dizinde ASCII olmayan karakterlerin bulunduğu dosya sayısı gibi faktörlere bağlı olarak en fazla dosya sayısı daha düşük olabilir. maxdirsize'ı izleme hakkında bilgi için bkz . İzleme maxdirsize
.
Dizin boyutuyla ilgili dikkat edilmesi gerekenler
Yüksek dosya sayısı ortamıyla ilgilenirken aşağıdaki önerileri göz önünde bulundurun:
- Azure NetApp Files birimleri, dizin boyutları için 320 MiB'a kadar destekler. Bu değer artırılamaz.
- Bir birimin dizin boyutu aşıldıktan sonra, birimde kullanılabilir boş alan olsa bile istemciler yetersiz alan hatası görüntüler.
- Normal birimler için 320 MiB dizin boyutu, tek bir dizinde yaklaşık 4-5 milyon dosyaya eşittir. Bu değer, dosya adı uzunluklarına bağlıdır.
- Büyük birimler normal birimlerden farklı bir mimariye sahiptir.
- Tek bir dizindeki yüksek dosya sayısı, arama yaparken performans sorunlarına neden olabilir. Mümkün olduğunda, sık arama gerektiğinde tek bir dizinin toplam boyutunu 2 MiB (kabaca 27.000 dosya) ile sınırlayın.
- Tek bir dizinde daha fazla dosya gerekiyorsa arama performansı beklentilerini buna göre ayarlayın. Azure NetApp Files, performans için dizin dosyası listelerini oluştururken, aramalar yüksek dosya sayılarıyla biraz zaman alabilir.
- Dosya sisteminizi tasarlarken düz dizin düzenlerinden kaçının. Dizin düzenlerine yönelik farklı yaklaşımlar hakkında bilgi için bkz . Dizin düzenleri hakkında.
- Dizin boyutunun aşıldığı ve yeni dosyaların oluşturulamama sorununu çözmek için, dosyaları ilgili dizinden silin veya taşıyın.
Dizin düzenleri hakkında
Bu maxdirsize
değer, tek bir klasörün tek bir düzeyde milyonlarca dosya içerdiği düz dizin yapılarını kullanırken sorun oluşturabilir. Dosyaların, klasörlerin ve alt klasörlerin kesiştiği klasör yapıları üzerinde maxdirsize
düşük etkiye sahiptir. Birkaç dizin yapısı yöntemi vardır.
Düz dizin yapısı, aynı dizinin altında birçok dosya bulunan tek bir dizindir.
Geniş bir dizin yapısı , tüm dizinlere yayılmış dosyaları olan birçok üst düzey dizin içerir.
Derin dizin yapısı , birçok alt dizini olan daha az üst düzey dizin içerir. Bu yapı klasör başına daha az dosya sağlasa da, dizin düzenleri çok derinse ve dosya yolları çok uzun olursa dosya yolu uzunlukları sorun haline gelebilir. Dosya yolu uzunluklarıyla ilgili ayrıntılar için bkz . Azure NetApp Files'da dosya yolu uzunluklarını anlama.
Azure NetApp Files'da düz dizin yapılarının etkisi
Düz dizin yapıları (tek veya birkaç dizindeki birçok dosya), çok çeşitli dosya sistemleri, Azure NetApp Dosya birimleri veya diğerleri üzerinde olumsuz bir etkiye sahiptir. Olası sorunlar şunlardır:
- Bellek baskısı
- CPU kullanımı
- Ağ performansı/gecikme süresi (özellikle dosyaların, işlemlerin,
GETATTR
READDIR
işlemlerin toplu sorguları sırasında)
Azure NetApp Files'ın büyük birimlerinin tasarımı nedeniyle bunun etkisi maxdirsize
benzersizdir. Azure NetApp Files büyük hacim maxdirsize
, tasarımı nedeniyle benzersiz bir şekilde etkilenir. Normal bir birimden farklı olarak, büyük bir birim daha fazla ölçek ve performans sağlamak üzere trafiği farklı depolama cihazları arasında yönlendirmeye yardımcı olmak için Azure NetApp Files içindeki uzak sabit bağlantıları kullanır. Düz dizinler kullanılırken, yerel dosyalara iç uzak sabit bağlantıların oranı daha yüksektir. Bu uzak sabit bağlantılar toplam maxdirsize
değere göre sayılır, bu nedenle büyük bir birim normal bir birimden daha hızlı sınıra maxdirsize
yaklaşabilir.
Örneğin, tek bir dizinde milyonlarca dosya varsa ve dosya sistemi için yaklaşık %85 uzak sabit bağlantı oluşturuyorsa, normal bir birimin neredeyse iki katı kadar tüketilmeyi bekleyebilirsiniz maxdirsize
.
Azure NetApp Files'da dizin boyutlarıyla ilgili en iyi sonuçlar için:
- Azure NetApp Files'da düz dizin yapılarından kaçının. Dosya veya klasörün yol uzunluğunun NAS protokol standartlarını aşmaması koşuluyla, geniş veya derin dizin yapıları en iyi şekilde çalışır.
- Düz dizin yapıları kaçınılmazsa dizinleri izleyin
maxdirsize
.
Ekran maxdirsize
Tek bir dizin için stat
komutunu kullanarak dizin boyutunu bulun.
# stat /mnt/dir_11/c5
Komut, belirli bir dizinin dizin boyutunu denetlemek için kullanılabilse stat
de, tek bir dizinde tek tek çalıştırmak o kadar verimli olmayabilir. En büyükten en küçüğe sıralanmış en büyük dizin boyutlarının listesini görmek için aşağıdaki komut, sorgudan anlık görüntü dizinlerini atlarken bunu sağlar.
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn
Not
stat komutu tarafından bildirilen dizin boyutu bayt cinsindendir. Bul komutunda bildirilen boyut KiB'dedir.
Örnek
# stat /mnt/dir_11/c5
File: ‘/mnt/dir_11/c5’
Size: 322396160 Blocks: 632168 IO Block: 32768 directory
# find /mnt -name .snapshot -prune -o -type d -ls -links 2 -prune | sort -rn -k 7 | head | awk '{print $2 " " $11}' | sort -rn
316084 /mnt/dir_11/c5
3792 /mnt/dir_19
3792 /mnt/dir_16
Önceki adımda dizin boyutu /mnt/dir_11/c5
316.084 KiB 'dir (308,6 MiB), 320-MiB sınırına yaklaşılır. Bu yaklaşık 4,1 milyon dosyaya eşit.
# ls /mnt/dir_11/c5 | wc -l
4171624
Bu durumda, dosyaları taşıma veya silme gibi düzeltici eylemleri göz önünde bulundurun.