Bu konu, NFS veya SMB protokolünü kullanan File Storage NAS dosya sistemlerinin performansı ile ilgili sık sorulan soruları yanıtlar.
Genel performans
Depolama kapasitesi dosya sistemi performansını nasıl etkiler?
Durum dosya sistemi türüne göre değişir:
General-purpose NAS dosya sistemi: Aktarım hızı depolama kapasitesiyle doğru orantılı olarak artar; daha fazla kapasite daha yüksek okuma ve yazma aktarım hızı sağlar. Ayrıntılar için bkz. General-purpose NAS dosya sistemleri.
Extreme NAS dosya sistemi: Depolama kapasitesi arttıkça okuma ve yazma performansı kademeli olarak yükselir. Ayrıntılar için bkz. Extreme NAS dosya sistemleri.
ECS örnek bant genişliği NAS performansını nasıl sınırlar?
Gerçek NAS aktarım hızı, bağlı olduğu ECS örneğinin ağ bant genişliği ile sınırlandırılır. Örneğin, NAS dosya sisteminiz 500 MB/s desteklese bile ECS örneğinizin ağ kartı 1 Gbit/s (yaklaşık 125 MB/s) ise gerçek aktarım hızı yaklaşık 125 MB/s ile sınırlı kalır.
Okuma veya yazma aktarım hızı eşiği aşıldığında ne olur?
NAS isteği otomatik olarak kısıtlar ve bu durum gecikme süresini artırır.
Aktarım hızı eşğini yükseltmek için:
General-purpose NAS dosya sistemi: Sağlanan kapasiteyi artırmak amacıyla
truncatekomutunu çalıştırın. Aşağıdaki General-purpose NAS dosya sisteminin aktarım hızı eşliğini nasıl artırabilirim? bölümüne bakın.Extreme NAS dosya sistemi: Dosya sistemini yatay olarak ölçeklendirin. Ayrıntılar için bkz. Extreme NAS dosya sistemini yatay olarak ölçeklendirme.
Aktarım hızı teknik özellikleri için bkz. General-purpose NAS dosya sistemlerinin performans ölçümleri ve Extreme NAS dosya sistemlerinin performans ölçümleri.
General-purpose NAS dosya sisteminin aktarım hızı eşliğini nasıl artırabilirim?
Sağlanan kapasiteyi artırmak için seyrek bir dosya oluşturun. Aktarım hızı kapasiteyle doğru orantılı olarak artar. Kesin ilişki için bkz. General-purpose NAS dosya sistemlerinin teknik özellikleri.
Her ek 1 TiB kapasite şu artışları sağlar:
Capacity NAS dosya sistemi: +150 MB/s
Performance NAS dosya sistemi: +600 MB/s
Yalnızca seyrek dosyaların gerçekten kapladığı alan için ücretlendirilirsiniz. Fiyatlandırma ayrıntıları için bkz. General-purpose NAS dosya sistemlerinin faturalandırması.
Linux'ta, truncate komutunu çalıştırın:
sudo truncate --size=1TB /mnt/sparse_file.txt
Bu komutta /mnt ECS örneğindeki bağlama yoludur.
Windows'ta, fsutil kullanın:
fsutil file createnew Z:\sparse_file.txt 1099511627776
Bu komutta Z:\ ECS örneğindeki bağlama yoludur.
Dizin taraması neden yavaş veya yanıt vermiyor?
Bu durum genellikle büyük veya aktif olarak değiştirilen bir dizinde ls çalıştırdığınızda, joker karakterler (* veya ?) kullandığınızda, rm -rf çalıştırdığınızda veya getdents çağırdığınızda ortaya çıkar. İki yaygın neden şunlardır:
Dizin değiştiriliyor. Dosyaları sık sık oluşturmak, silmek veya yeniden adlandırmak önbelleği geçersiz kılar ve yanıtları yavaşlatır.
Dizin meta verileri istemci önbelleği boyutunu aşıyor. Bu durum sık önbellek tahliyesine ve yavaş yanıtlara neden olur.
Sorunu çözmek için:
Her dizinde 10.000'den az dosya tutun.
Dizini tararken aynı anda dizini değiştirmekten kaçının.
10.000'den fazla dosya içeren ve sık değiştirilmeyen dizinler için NFSv3 protokolü ile bağlayın ve taramayı hızlandırmak üzere
nordirplusparametresini ekleyin. Bu yaklaşımı üretim ortamında uygulamadan önce test edin. Ayrıntılar için bkz. Bağlama parametreleri.
NFS bağlama parametreleri
Bağlama parametreleri NAS performansını nasıl etkiler?
Performansı etkileyen temel NFS bağlama parametreleri şunlardır:
rsize ve wsize
Bu parametreler istemci ve sunucu arasındaki maksimum okuma/yazma isteği boyutunu tanımlar. Daha büyük bir değer ağ istek sayısını azaltır ve özellikle büyük dosyalarda aktarım hızını artırır.
Önerilen değer: 1048576 (1 MB). Daha küçük değerler ağ ek yükü oluşturur ve performansı düşürür.
hard
Etkinleştirildiğinde, NAS sunucusu kullanılamaz duruma geldiğinde istemci sunucunun yanıt vermesini bekleyerek sürekli yeniden dener. Bu seçenek veri bütünlüğünü korur ancak uygulamaların geçici olarak askıda kalmasına neden olabilir.
Bu parametreyi her zaman etkinleştirin. Yüksek kullanılabilirlik gerektiren iş yükleri için uygundur.
timeo
İstemcinin bir isteği yeniden denemeden önce ne kadar süre bekleyeceğini tanımlar. Kısa bir zaman aşımı sık yeniden denemelere neden olur ve kararsız ağlarda performansı düşürür.
Önerilen değer: 600 (60 saniye). Bu değer ağın toparlanması için yeterli süreyi tanır.
retrans
NFS istemcisini başarısız bir isteği kaç kez yeniden deneyeceğini tanımlar. Daha fazla yeniden deneme başarı oranını artırır ancak gecikme süresini de uzatabilir.
Önerilen değer: 2. Bu değer performans ve güvenilirlik arasında dengeli bir seçimdir.
noresvport
Etkinleştirildiğinde, istemci ağ hatası sonrası yeni bir TCP bağlantı noktası kullanır. Bu seçenek yeniden bağlanma güvenilirliğini artırır.
Bu parametreyi her zaman etkinleştirin.
softbağlama seçeneği önerilmez. Sunucu zamanında yanıt vermezse sessiz veri bozulmasına neden olabilir. Yalnızca uygulamanız G/Ç hatalarını düzgün şekilde yönetebiliyorsa ve riskleri tam olarak anlıyorsanız kullanın.Bağlama seçeneklerini varsayılan değerlerinden değiştirmekten kaçının. Okuma/yazma arabellek boyutlarını değiştirmek veya nitelik önbelleğe almayı devre dışı bırakmak performansı düşürebilir.
NFS ve Linux performansı
Linux'ta NAS performansını nasıl artırabilirim?
Çekirdek sürümünüze bağlı olarak iki seçenek mevcuttur.
Seçenek 1: nconnect parametresini kullanma (çekirdek 5,3 veya üzeri)
nconnect bağlama parametresi tek bir NFS bağlamasının birden çok TCP bağlantısı kullanmasına olanak tanır. Bu yöntem yüksek eşzamanlılık gerektiren iş yüklerinde aktarım hızını önemli ölçüde artırır; testler 3 ila 6 kat iyileşme ve 3 GB/s'ye kadar çıkış göstermektedir.
Tek bir ECS örneğinde 16'dan fazla eşzamanlı G/Ç işlemi çalıştığında bu seçeneği kullanın.
Ön koşullar: Linux çekirdeği 5,3 veya üzeri. Bu parametre NAS dosya sisteminin aktarım hızı eşliğini doğrudan artırmaz.
Bağlama komutuna nconnect=4 ekleyin:
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,nconnect=4
nconnect parametresi örnek başına aktarım hızını artırır ancak NAS dosya sisteminin aktarım hızı eşliğini yükseltmez. Gecikme süresini artırdığı için tek eşzamanlı, küçük veri bloğu veya gecikmeye duyarlı iş yüklerinde etkinleştirmeyin.
Seçenek 2: sunrpc.tcp_slot_table_entries ayarını yapma (3,10'dan eski çekirdekler)
sunrpc modülü tek bir NFS bağlantısındaki iletişim yuvası sayısını kontrol eder. Birden çok eşzamanlı G/Ç işleminiz olduğunda bu değeri ayarlamak faydalı olur.
Yüksek aktarım hızı için yuva sayısını 128 olarak ayarlayın.
Düşük gecikme süresi için yuva sayısını 16 veya daha az olarak ayarlayın.
nconnect parametresi daha etkilidir. Çekirdeğiniz 5,3 veya üzeriyse nconnect kullanın.
Talimatlar için bkz. Eşzamanlı NFS istek sayısını değiştirme.
Linux çekirdeği 5,4 veya üzeri sürümlerde NFS sıralı okuma performansını nasıl artırabilirim?
read_ahead_kb parametresi Linux çekirdeğinin sıralı okumalar sırasında ne kadar veri ön belleğe alacağını kontrol eder. Çekirdek 5,4'ten başlayarak bu değer varsayılan olarak 128 KB'dır ve NAS iş yükleri için çok düşüktür. Önerilen bağlama seçeneklerini kullanırken bu değeri 15 MB'a (15000 KB) çıkarın.
Daha eski çekirdek sürümlerinde değer, NFS_MAX_READAHEAD ile rsize değerlerinin çarpımına eşittir.
Dosya sistemini bağladıktan sonra aşağıdaki komutları çalıştırın. nas-mount-point yerine yerel bağlama yolunu ve read-ahead-kb yerine KB cinsinden istenen değeri yazın:
device_number=$(stat -c '%d' nas-mount-point)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo read-ahead-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"
Bağlama yolu olarak /mnt kullanan ve read_ahead_kb değerini 15 MB olarak ayarlayan örnek:
device_number=$(stat -c '%d' /mnt)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"
NGINX neden NAS dosya sistemine günlük yazarken uzun süre alıyor?
access_log yolu değişkenler içeriyor. NGINX her günlük girişi yazdığında günlük dosyasını açıp kapatır. NAS'te bir dosyayı kapatmak tutarlılık sağlamak için verilerin sunucuya yazılmasını tetikler. Bu sık açma-kapatma-yazma döngüsü önemli bir ek yük oluşturur.
İki çözüm yöntemi:
Çözüm 1: access_log yönergesinden değişkenleri kaldırın ve sabit bir dosya yolu kullanın.
Çözüm 2: Sık kullanılan günlük dosyaları için dosya tanımlayıcılarını önbelleğe almak amacıyla open_log_file_cache yönergesini kullanın. Bu yöntem günlük yolları değişken içerdiğinde ek yükü azaltır. Ayrıntılar için bkz. open_log_file_cache.
Önerilen yapılandırma:
open_log_file_cache max=1000 inactive=1m valid=3m min_uses=2;
SMB ve Windows performansı
SMB dosya sisteminde G/Ç işlemleri neden gecikiyor?
Bu durum genellikle gereksiz ağ sağlayıcılarının veya hizmetlerinin SMB bağlantısına müdahale etmesinden kaynaklanır. Yaygın nedenler şunlardır:
Bir NFS istemcisi yüklü ancak kullanılmıyor.
WebClient hizmeti etkin ve Windows SMB'den önce WebDAV bağlantıları deniyor.
Kayıt defterindeki
ProviderOrderdeğeriNfsnpiçeriyor ve bu durum dosyaların açılmasını engelliyor.
Sorunu çözmek için:
Önce bağlantıyı kontrol edin. Bağlama hedefi alan adına ping atın. Ping başarısız olursa ağ ayarlarınızı düzeltin. Gecikme yüksekse bunun yerine bağlama hedefi IP adresine ping atın. IP gecikmesi alan adı gecikmesinden çok daha düşükse DNS yapılandırmanızı kontrol edin.
NFS istemcisini kaldırın; yüklüyse ancak kullanmıyorsanız kaldırın.
WebClient hizmetini devre dışı bırakın.
Kayıt defterinden Nfsnp öğesini kaldırın.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrderanahtarını açın. DeğerNfsnpiçeriyorsa bunu kaldırın ve ECS örneğini yeniden başlatın.
-
Performans ölçümlerinin anormal olup olmadığını kontrol etmek için Fio aracını kullanın.
fio.exe --name=./iotest1 --direct=1 --rwmixread=0 --rw=write --bs=4K --numjobs=1 --thread --iodepth=128 --runtime=300 --group_reporting --size=5G --verify=md5 --randrepeat=0 --norandommap --refill_buffers --filename=\\<mount target address>\myshare\testfio1 Okuma ve yazma işlemleri için büyük G/Ç boyutları kullanın. Küçük G/Ç boyutları daha fazla ağ kaynağı tüketir. G/Ç boyutlarını değiştiremiyorsanız belirtilen arabellek boyutuyla veri yazmak için
BufferedOutputStreamsınıfını kullanın.
Windows Server SMB istemcilerinde G/Ç işlemleri neden yavaş?
Varsayılan olarak Windows SMB istemcilerinde large mtu seçeneği devre dışıdır. Bu durum G/Ç performansını sınırlar.
Kayıt defterini değiştirerek bu seçeneği etkinleştirin:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parametersanahtarını açın.DWORDveri türündeDisableLargeMtuadlı bir anahtar oluşturun.Değeri
0olarak ayarlayın.Değişikliğin etkili olması için ECS örneğini yeniden başlatın.
SMB paylaşımına ilk bağlantı neden yavaş?
Windows, SMB sağlayıcısına ulaşmadan önce gereksiz veya yavaş ağ sağlayıcılarını dener. DNS çözümleme gecikmesi de bu gecikmeye katkıda bulunabilir.
Kayıt defterini değiştirmek yüksek riskli bir işlemdir. Devam etmeden önce bir sistem anlık görüntüsü oluşturun veya kayıt defterini yedekleyin.
Adım 1: Ağ sağlayıcı sırasını optimize edin
Win+R tuşlarına basın,
regeditgirin ve Kayıt Defteri Düzenleyicisi'ni açın.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Orderkonumuna gidin.ProviderOrderdeğerini bulun ve çift tıklayın.Value data metin kutusunda
NfsnpveWebClientgirişlerini bulup silin. Kalan sağlayıcılar arasında virgül bırakın.Kaydetmek için OK düğmesine tıklayın.
ECS örneğini yeniden başlatın.
Adım 2: DNS çözümleme gecikmesini giderin
1. Adımdan sonra sorun devam ediyorsa:
Komut İstemi'ni (CMD) açın.
ping <mount target address>komutunu çalıştırın ve gecikmeyi kaydedin.ping <IP address of the mount target>komutunu çalıştırın ve gecikmeyi kaydedin.Sonuçları karşılaştırın. IP gecikmesi alan adı gecikmesinden çok daha düşükse DNS çözümlemesi yavaştır. ECS örneğinizdeki DNS yapılandırmasını kontrol edin.
IIS'in NAS'a erişim performansını nasıl artırabilirim?
Internet Information Services (IIS), NAS paylaşımlı dizinindeki dosyalara erişirken dosya başına birden çok arka uç isteği gönderebilir ve her istek bir ağ gidiş-dönüşü gerektirir. Tek tek istekler hızlı olsa da kümülatif gecikme istemci yanıtını yavaşlatır.
Çözüm 1: SMB Yönlendirici önbellek ömürlerini artırın
Dosya meta verilerini önbelleğe almak için SMB Yönlendirici bileşenini kullanın. Arka plan bilgisi için bkz. SMB2 Client Redirector Caches Explained.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters anahtarını açın ve aşağıdaki değerlerin her birini 600 veya daha yüksek bir değere ayarlayın:
FileInfoCacheLifetimeFileNotFoundCacheLifetimeDirectoryCacheLifetime
Bu kayıt defteri değerleri yoksa dosya sisteminin SMB protokolünü kullandığını ve Windows sürümünüzün bunları desteklediğini kontrol edin. Destekleniyorsa ancak eksikse manuel olarak oluşturun. Ayrıntılar için bkz. Performance tuning for file servers.
Çözüm 2: Sık erişilen web dosyalarını yerel olarak saklayın
IIS statik dosyalara (JS, CSS) sık sık erişiyorsa bunları NAS yerine yerel disklerde saklayın.
Performans hâlâ gereksinimlerinizi karşılamıyorsa bir destek bileti oluşturun.